将日期存储变量转换为unix时间BASH

时间:2014-01-31 10:22:10

标签: bash unix time

我正在尝试将存储在变量中的日期转换为unix时间戳。我有值,我必须提供此值的格式(“%m%d%Y”)然后转换它(“%s”)。你能给我一个提示吗?

>initial_date=02012014
>date_2_unixtime=`date +"%m%d%Y" -d $initial_date +"%s"`
date: extra operand `+%s'
Try `date --help' for more information.

谢谢

2 个答案:

答案 0 :(得分:0)

您的日期位于mmddyyyy,需要yyymmdd date来解释。此外,您不提供输入日期格式到日期命令。格式仅供显示。

以这种方式使用:

initial_date=02012014
dt="${initial_date:4}${initial_date:0:4}"
date +"%s" -d "$dt"
1391230800

答案 1 :(得分:0)

问题是,您必须将initial_date转换为date识别的格式。

不幸的是,

02012014不是其中之一。

kent$  date -d "02012014"
date: invalid date ‘02012014’

如果你喜欢单行,你可以尝试:

date -d $(sed -r 's#(..)(..)(....)#\1/\2/\3#' <<<$initial_date) +%s
1391209200