Date

如何確定並將目前時間轉換為當天經過的秒數?

  • November 26, 2017

我想問您如何確定並將目前時間轉換為當天經過的秒數?

實際上,我想以秒為單位顯示從現在到午夜有多長時間。由於一天中的總秒數是 86400,所以我將用 86400 減去目前時間(從今天開始經過的秒數)。

編輯:

這是實際的問題。如果date -d不工作,那麼我們的教練怎麼能提出這樣的問題。也許有辦法。這個問題誰都懂。他們有一種不同的方式,即從沒有秒數中減去。

在此處輸入圖像描述

嘗試:

eval "`date +'@ s = (86400 - %S) - 60 * (%M + 60 * %H)'`"; echo $s

但是請注意,在具有冬季和夏季時間的時區中,如果在從夏季時間切換到夏季時間的當天呼叫它不會給出正確的結果,在切換之前(通常發生在清晨)。

請注意,在 中csh,算術運算符與優先於是右關聯的,如*/``+-

@ s = 1 - 2 + 3 - 4

@ s = 1 - (2 + (3 - 4))

並不是:

@ s = (((1 - 2) + 3) - 4)

和其他語言一樣。這已在tcsh(6.15.01) 中修復,您可以執行set compat_expr以恢復那裡的舊行為。

因此,括號周圍86400 - %S,所以它適用於兩者cshtcsh

假設您有 GNU 日期(或其他date理解-d並正常工作的程序)並使用bash

您可以使用該-d標誌來報告各個時間點的時間。所以,例如

% date -d "00:00:00 tomorrow"
Sat Jul 16 00:00:00 EDT 2016

我們可以使用它來報告秒數+%s

% date -d "00:00:00 tomorrow" +%s
1468641600

我們知道我們目前的時間,以秒為單位:

% date +%s                       
1468633682

所以我們可以計算出差異:

% secs_left=$(( $(date -d "00:00:00 tomorrow" +%s) - $(date +%s) ))
% echo $secs_left
7871

(這是正確的;7871 秒是 2 小時 11 分 11 秒,這對於我執行該命令時是正確的)。

按要求編輯csh

csh類似的命令中

% @ secs_left = ( `date -d "00:00:00 tomorrow" +%s` - `date +%s` )
% echo $secs_left
7871

引用自:https://unix.stackexchange.com/questions/296263