我找不到正确的语法来转换纪元时间戳中的字符串日期。
脚本是:
date -d '2012-03-02 22:00 EDT' +%s
DATEJ=`echo -n \'2012-03-02 22:00\'`
echo $DATEJ
date -d $DATEJ EDT +%s
结果是
[gg@raspi8 ~]$ CNVDATTS
1330740000
'2012-03-02 22:00'
date: opérande supplémentaire « EDT »
Saisissez « date --help » pour plus d'informations.
错在哪里?
该变量似乎DATEJ
没有给出与第一行中的字符串相同的值。如果我不写EDT
,错误是相同的,但要提及+%s
。
答案1
这里的问题似乎是单引号$DATEJ
。你的变量强加了它们。
将其更改为
DATEJ=`echo -n "2012-03-02 22:00"`
并在最后的命令中:
date -d "$DATEJ EDT" +%s
这将起作用:
$ date -d '2012-03-02 22:00 EDT' +%s
1330740000
$ DATEJ=`echo -n "2012-03-02 22:00"`
$ echo $DATEJ
2012-03-02 22:00
$ date -d "$DATEJ EDT" +%s
1330740000
编辑
实际上,您不需要echo
日期,除非您的脚本强制如此,所以变量$DATEJ
可以简单地表示为
DATEJ="2012-03-02 22:00"
答案2
希望以下内容能够帮助您或其他寻求解决方案的人。
日期字符串可以是格式mm/dd/yyyy hh:mm:ss zzz
或任何等效格式。例如:"06/10/2021 21:00:00 EST"
或"06/10/2021 09:00:00 EST"
TZ 数据是可选的。
您可以发出以下命令来获取纪元时间戳:
date -d "06/10/2021 00:00:00 EST" +"%s"
或者
您可以将字符串传递到变量中,例如:
date_string="06/10/2021 00:00:00 EST"
date -d "$date_string" +"%s"
对于您的具体问题,以下应该有效:
date -d '2012-03-02 22:00 EDT' +%s
DATEJ=`echo -n "2012-03-02 22:00"`
echo $DATEJ
date -d "$DATEJ EDT" +%s