![](/img/trans.png)
[英]How to convert a specific format of string to date/seconds shell script linux
[英]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 date與BSD 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.