編集:Amazon Linuxを使用する:
Linux ip-xx-xx-xx-xxx 3.14.44-32.39.amzn1.x86_64 #1 SMP Thu 6月11日 20:33:38 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
このコマンドの出力は次のとおりです。
date +"%Y-%m-%d %H:%M:%S" --date="2015-07-27 00:11:22"
2015-07-27 00:11:22
このコマンドの出力は次のとおりです。
date +"%Y-%m-%d %H:%M:%S" --date="2015-07-27 00:11:22 + 00:05"
2015-07-27 00:06:22
このコマンドの出力は次のとおりです。
date +"%Y-%m-%d %H:%M:%S" --date="2015-07-27 00:11:22 - 00:05"
2015-07-27 00:16:22
マッソサ、私たちの時間を元に戻したのだろうか?それとも8階に問題があるのでしょうか?
編集する:私のAmazon Linuxの時間はUTC+00:00で、Ubuntuローカルシステムの時間はUTC-05:00です。 Ubuntuの同じコマンドは次のようになります。
2015-07-26 19:11:22
2015-07-26 19:06:22
2015-07-26 19:16:22
それぞれ+ 00:05
タイムゾーンではないようです。
答え1
消息筋によるとgnulibの解析-datetime.y、機能関連機能のようですタイムゾーン_hhmm。
まず、次の形式を使用して秒を追加することはできません。date +"%Y-%m-%d %H:%M:%S" --date="2015-07-27 00:11:22 - 00:05:01"
解析エラーが発生します。
date: invalid date ‘2015-07-27 00:11:22 - 00:05:01’
次に、time_zone_hhmm関数のヘッダーに従って:
/* Convert a time zone expressed as HH:MM into an integer count of
minutes. If MM is negative, then S is of the form HHMM and needs
to be picked apart; otherwise, S is of the form HH. As specified in
http://www.opengroup.org/susv3xbd/xbd_chap08.html#tag_08_03, allow
only valid TZ range, and consider first two digits as hours, if no
minutes specified. */
したがって、時間を逆順に追加/削除する動作に一致する時間帯を変更するようです。
時間通りに算術を実行するには、計算を簡単に実行できるEpochタイムスタンプ(日付+ '%s')を使用することをお勧めします。また、これはUTC時間に基づいており、使用しているサーバーのローカルタイムゾーンを考慮しません。
したがって、タイムスタンプは米国、アジア、またはヨーロッパで同じ結果を返します。次に、このタイムスタンプを使用して、時間帯を考慮して人が読める時間を表示します。
とにかくよく捕まった。この素晴らしいヒントがなければ、私は決してgnulibソースコードを掘り下げなかったでしょう!