현지화된 날짜 문자열을 에포크로 변환

현지화된 날짜 문자열을 에포크로 변환

date문자열을 변환하려고 합니다.본토 포르투갈어epoch 시간으로 돌아가는 데 사용합니다 bash. 내 기본 로케일은en_US.utf8

내 예제 문자열은Mai 12 06:58:47 WEST 2015

나는 이것을 시도했습니다 :

LC_TIME="pt_PT.utf8" date --date="Mai 12 06:58:47 WEST 2015" +%s    
LC_ALL="pt_PT.utf8" date --date="Mai 12 06:58:47 WEST 2015" +%s

첫 번째 명령은 오류를 반환 date: invalid date하고 두 번째 명령은 포르투갈어로 동일한 오류를 반환합니다.

나도 시도해봤는데 pt_PT말이 안 되더라.제 생각에는, 해당 로캘이 설치되어 있지 않기 때문입니다.

어떻게 해야 합니까?

답변1

GNU는 date영어만 이해할 수 있습니다.

ksh93을 사용해 볼 수 있습니다:

$ LC_ALL=pt_PT.UTF-8 ksh -c 'printf "%(%F)T\n" "Mai 12 06:58:47 WEST 2015"'
2015-05-12

또는 zsh:

zmodload zsh/datetime
strftime -rs t "%b %d %H:%M:%S %Z %Y" "Mai 12 06:58:47 WEST 2015"
strftime %F $t

답변2

안타깝게도 date이는 현재 GNU에서는 불가능합니다. ~에서문서:

'--date=datestr'

현재 날짜 및 시간 대신 datestr에 지정된 날짜 및 시간을 표시합니다. datestr은 거의 모든 일반적인 형식일 수 있습니다. 월 이름, 시간대, 'am'과 'pm', '어제' 등을 포함할 수 있습니다. 예를 들어 --date="2004-02-27 14:19:13.489392193 +0530"은 2004년 2월 27일 오후 2시 19분 13초 이후의 시간을 489,392,193나노초로 지정하고 시간대는 UTC 30에서 동쪽으로 5시간입니다. 분.
참고: 현재 입력은 로케일 독립적인 형식이어야 합니다. 예를 들어, 많은 로케일에서 올바른 날짜를 다시 인쇄하려면 다음 LC_TIME=C가 필요합니다.:

date -d "$(LC_TIME=C date)"

(강조 추가)

관련 정보