簡體   English   中英

將日期字符串轉換為特定時間戳格式的 Shell 腳本

[英]Shell script to convert a date string to specific timestamp format

我有一個像這樣的日期時間字符串17-Mar-2020.22:22 -0300 。我想得到2020-03-17 22:12的輸出。

時區偏移會導致問題,因為沒有我可以轉換

例如DATE=17-Mar-2020.22:22 date -jf "%d-%b-%Y.%H:%M" $DATE "+date \\"%Y-%m-%d %H:%M\\""

但是這個時區偏移導致了一個問題。有人可以幫忙嗎?

因為輸入的格式不尋常,所以需要先格式化成date可以吃的格式。 我使用手冊頁"2004-02-29 16:21:42""Sun, 29 Feb 2004 16:21:42 -0800"指示的格式。 GNU 日期允許非常靈活的輸入格式 - 不要相信它。

下面我使用sed來匹配輸入並重新格式化它。

input='17-Mar-2020.22:22 -0300'
input2="$(sed 's/\([0-9]*\)-\([^-]*\)-\([^\.]*\)\.\([0-9]*\):\([0-9]*\)/\1 \2 \3 \4:\5:00/' <<<"$input")"
# input2="17 Mar 2020 22:22:00 -0300"
date --date="$input2" +"%Y-%m-%d %H:%M"
# 2020-03-18 02:22

日期 -jf

GNU dateBSD date有很大不同。 他們是完全不同的。 BSD date 支持-j-f選項,GNU date 不支持。

dateutils ,它們包括strptime實用程序,允許對日期執行您想做的操作:

strptime -e -f "%Y-%m-%d %H:%M\n" -i "%d-%b-%Y.%H:%M %Z" "17-Mar-2020.22:22 -0300"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM