epoch 타임스탬프에서 문자열 날짜를 변환하는 올바른 구문을 찾을 수 없습니다.
스크립트는 다음과 같습니다
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