我有以下格式dd/MMM/YYYY:HH:mm:ss
的字符串(例如13/Jan/2011:08:23:34
)我需要将此字符串转换为日期。我怎样才能做到这一点?
提前致谢
答案 0 :(得分:6)
尝试
GNU日期
mydate='13/Jan/2011:08:23:34'
date +%s -d "${mydate:3:3} ${mydate%%/*} ${mydate:7:4} ${mydate#*:}"
FreeBSD日期
mydate='13/Jan/2011:08:23:34'
date -j -f '%d/%b/%Y:%H:%M:%S' "${mydate}" +%s
基本上,使用GNU日期,您必须将日期重新格式化为GNU日期可以理解和解析的内容。我选择了一种粗糙的方法(在现实世界中,它需要更加可靠)。 FreeBSD在这方面更好,并允许您指定解析器应查找的日期格式。
答案 1 :(得分:1)
您必须按下日期字符串才能对date
命令有效。
给定d="13/Jan/2011:08:23:34"
epoch=$( IFS="/:"; set -- $d; date -d "$1 $2 $3 $4:$5:$6" +%s )
d2=${d//\// } # replace slashes with spaces
epoch=$( date -d "${d2/:/ }" +%s )