我有一個數值N1 = 20170708192012,想轉換爲最新 類似: D1 = echo $N1 | date -d '+%Y%m%d%H%M%S'
回聲$ D1KSH:如何整數轉換日期,並添加分給它,在UNIX
轉換後添加40分鐘以獲取新日期。
我有一個數值N1 = 20170708192012,想轉換爲最新 類似: D1 = echo $N1 | date -d '+%Y%m%d%H%M%S'
回聲$ D1KSH:如何整數轉換日期,並添加分給它,在UNIX
轉換後添加40分鐘以獲取新日期。
你需要將它傳遞給日期等之前解析字符串:
N1=$(awk '{ print substr($0,1,8)" "substr($0,9,2)":"substr($0,11,2)":"substr($0,13,2)}' <<< 20170708192012)
用AWK和SUBSTR函數接受日期格式建立N1。
如果您awk
支持time functionsmktime
和strftime
(這是一個GNU擴展名),你可以先轉換輸入的字符串爲Unix時間戳(手動分割和使用mktime
),然後用strftime
格式化輸出:
N1=20170708192012
D1=$(awk '{ print strftime("%Y%m%d%H%M%S", mktime(substr($0,1,4)" "substr($0,5,2)" "substr($0,7,2)" "substr($0,9,2)" "(substr($0,11,2)+40)" "substr($0,13,2))) }' <<<"$N1")
請注意,mktime
接受日期只在"YYYY MM DD HH MM SS"
格式,這就是爲什麼我們需要手動構建它。但是它自動進行標準化,它會很高興地將"2017 1 1 0 80 0"
轉換爲與"2017 1 1 1 20 0"
相同的時間戳。這就是爲什麼我們可以簡單地將40
添加到輸入的分鐘數並獲得正確的輸出。
您的輸入,我們得到:
echo $D1
20170708200012
'date'無法解析該格式的日期。 awk是一個可以接受的選項嗎? – randomir
@randomir,是的awk可以是一個選項 – Harshil