Date

GNU 日期:截斷提供的日期時間並設置提供的時間

  • July 22, 2020

我在變數中有一個時間戳值,我需要從中截斷小時數並設置不同的小時數。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

GNUdate不允許對時間戳進行任何附加規範。

date資訊文件:

如果你在一個數字前加上“@”,它表示一個內部時間戳,以秒為單位。該數字可以包含一個內部小數點(“.”或“,”);內部表示不支持的任何超額精度都會被截斷為負無窮大。 這樣的數字不能與任何其他日期項目組合,因為它指定了完整的時間戳。

(強調我的)

恐怕您需要兩次呼叫,例如

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

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