GNU Date:提供された日付/時刻を切り捨て、提供された時間を設定します。

GNU Date:提供された日付/時刻を切り捨て、提供された時間を設定します。

変数にタイムスタンプ値があり、その値から時間を切り捨てて別の時間を設定する必要があります。 GNU dateはこれを一度に行うことができますか? 「今日」、「明日」、「昨日」などの特別な日付については確かにこれを行いますが、任意のタイムスタンプで算術を使用することはできません。

$ date -d"tomorrow 10:05"
Thu Jul 23 10:05:00     2020

il@mar2 ~
$ date -d"yesterday 10:05"
Tue Jul 21 10:05:00     2020

$ date -d"@1595413447"
Wed Jul 22 13:24:07     2020

il@mar2 ~
$ date -d"@1595413447 10:05"
date: invalid date '@1595413447 10:05'
# desired: Wed Jul 22 10:05:00     2020

ベストアンサー1

GNUはdateタイムスタンプの追加指定を許可しません。

date情報文書から:

数字の前に「@」がある場合は、内部タイムスタンプ(秒)を示します。数値には内部小数点(「.」または「、」)を含めることができます。内部表現でサポートされていない超過精度は負の無限大に切り捨てられます。 これらの数字は完全なタイムスタンプを指定するため、他の日付項目と組み合わせることはできません。

(強調は私のもの)

たとえば、2回呼び出す必要があるようです。

date -d "$(date -d @1595413447 +'%F 10:05')"

おすすめ記事