Date
如何確定並將目前時間轉換為當天經過的秒數?
我想問您如何確定並將目前時間轉換為當天經過的秒數?
實際上,我想以秒為單位顯示從現在到午夜有多長時間。由於一天中的總秒數是 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
,所以它適用於兩者csh
和tcsh
。
假設您有 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