解析用于在bash中检索日期的字符串

时间:2011-09-22 14:06:51

标签: bash

我有以下格式dd/MMM/YYYY:HH:mm:ss的字符串(例如13/Jan/2011:08:23:34)我需要将此字符串转换为日期。我怎样才能做到这一点? 提前致谢

2 个答案:

答案 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"

  1. epoch=$( IFS="/:"; set -- $d; date -d "$1 $2 $3 $4:$5:$6" +%s )
  2. d2=${d//\// } # replace slashes with spaces
    epoch=$( date -d "${d2/:/ }" +%s )