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)"
(강조 추가)