2014-01-31 48 views
0

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

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

谢谢

回答

0

你的日期是在mmddyyyy,它需要在yyymmdddate解释。你也不提供输入日期格式到日期命令。格式仅用于显示目的。

使用这种方式:

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

是,为什么你的输出是'1391230800'代替'1391209200'我很好奇? – Kent

+0

@Kent:Timezone offset :)我的时钟设置为UTC,距离UTC UTC时间6小时。 – anubhava

+2

@Kent,我想anubhava来自未来:) – fedorqui

0

的问题是,你有你的initial_date转换成date识别的格式。不幸的是,它不是其中之一。

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

如果你喜欢的一个内胆,你可以尝试:

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

你是指'\ 3 \ 2 \ 1'吗? –

+0

'1/2/3'和'321'均可工作@glennjackman – Kent

+0

作品完美。上帝保佑你们 ! – user3253335

相关问题