2017-12-08 3 views
2

私は、日付の計算を含む多くの質問と回答があることを認識していますが、OS X/macOSの問題の解決策は見つかりませんでした。私は2つの日時の時差を計算したいと思いますが、構文が間違っている必要があります。MacOSのBashの日付/時刻の相違を計算します

now=$(date +"%b %d %Y %H:%M:%S") 
end=$(date +"Dec 25 2017 08:00:00") 
dif=$(date -j -f "%b %d %Y %H:%M:%S" "$end" - "$now") 
echo $dif 
# Mon Dec 25 08:00:00 MST 2017 

それだけ$end値を返しますので、私は実際には時間差を計算するかどうかはわかりません。

答えて

2

理想的な方法は、EPOCHに現在の時刻を変換しても、あなたはEPOCHにも必要な日付との差分を取得している(これは、macOS Sierrabash上で動作します)

dudeOnMac:~ $ date +%s 
1512757414 
dudeOnMac:~ $ date -j -f "%b %d %Y %H:%M:%S" "Dec 25 2017 08:00:00" +%s 
1514169000 

だから今のように変数に保存します欲しい

end=$(date -j -f "%b %d %Y %H:%M:%S" "Dec 25 2017 08:00:00" +%s) 
now=$(date +%s) 
printf '%d seconds left till target date\n' "$(((end-now)))" 
printf '%d days left till target date\n' "$(((end-now)/86400))" 
+0

答えをありがとう。 1つの質問ですが、 '+%s'は実際に何をしていますか? – ctfd

+1

これまでに指定された時間をEPOCH時間に変換します – Inian