Bash - 将字符串转换为日期

时间:2015-06-20 10:08:53

标签: bash

我需要在bash中将包含小时的字符串转换为日期,例如:2012-02-09-18,并将结果存储在变量中,以便我可以将这些字符串作为日期进行比较。如果我用于转换

  date -d "2012-02-09-18"

它会因"无效的日期错误"而崩溃。我怎么能这样做?

2 个答案:

答案 0 :(得分:4)

尝试使用bash的parameter expansion

a="2012-02-09-18"
date -d "${a%-*} ${a#*-*-*-*}"

输出:

Thu Feb  9 18:00:00 CET 2012

答案 1 :(得分:3)

您可以使用date调整输入以使其sed可解析:

str='2012-02-09-18'

date -d "$(sed 's/-\([^-]*\)$/ \1/' <<< "$str")"
Thu Feb  9 18:00:00 EST 2012