현재 내 시스템에서는 기본적으로 다음과 같이 date
출력됩니다.
$ date
Fri 29 Jan 22:04:26 GMT 2016
그러나 이 형식의 날짜를 다시 입력하려고 하면 date
"잘못된 날짜"가 발생합니다.
$ date -d "$(date)"
date: invalid date ‘Fri 29 Jan 22:06:14 GMT 2016’
date
다음을 이해할 수 있는 형식을 수동으로 선택할 수 있다는 것을 알고 있습니다 .
$ date -d "@$(date +%s)"
Fri 29 Jan 22:08:03 GMT 2016
하지만 다시 허용되지 않는 형식을 출력하는 이유가 궁금합니다.
답변1
나는 수년 동안 나를 괴롭혔던 이 답변을 검색하는 데 약 2시간을 보냈고 마침내 그것을 발견했습니다!!
기본적으로 또는 등 date
의 현재 로케일 형식으로 날짜를 출력합니다 .en_GB.UTF-8
en_AU.UTF-8
de_DE.UTF-8
귀하의 기본 로케일은 내 것과 유사하며 날짜를 다음 형식으로 표시합니다.
date_fmt "%a %e %b %H:%M:%S %Z %Y"
불행하게도 이것은 date 명령이 이해할 수 없는 몇 가지 형식 중 하나입니다. 그러나 만일이해할 수 있다매우 유사한 형식
date_fmt "%a %e %b %Y %H:%M:%S %Z"
"2016년 1월 29일 금요일 22:04:26 GMT" 작동
"2016년 1월 29일 금요일 22:04:26 GMT"는 그렇지 않습니다.
매우 일반적으로 사용되는 로케일의 en_GB.UTF-8 및 en_AU.UTF-8이 읽을 수 없는 형식을 사용하는 이유 date
는 모르겠지만 적어도 다시는 귀찮게 하지 않도록 조정하는 것은 매우 쉽습니다. 시스템을 다시 설치하거나 과도한 업데이트로 정의를 덮어쓸 때까지 >:-(
3단계로 로케일의 날짜 형식을 사용자 정의하는 방법
다음 정보를 찾았습니다.여기:
1. 사용 중인 로케일을 확인하세요.
먼저 시스템이 시간 및 날짜 형식으로 사용하는 로캘을 확인하세요.
$ locale
LANG=en_AU.UTF-8
LANGUAGE=en_AU
LC_CTYPE="en_AU.UTF-8"
LC_NUMERIC=en_AU.UTF-8
LC_TIME=en_AU.UTF-8
LC_COLLATE="en_AU.UTF-8"
LC_MONETARY=en_AU.UTF-8
LC_MESSAGES="en_AU.UTF-8"
LC_PAPER=en_AU.UTF-8
LC_NAME=en_AU.UTF-8
LC_ADDRESS=en_AU.UTF-8
LC_TELEPHONE=en_AU.UTF-8
LC_MEASUREMENT=en_AU.UTF-8
LC_IDENTIFICATION=en_AU.UTF-8
LC_ALL=
참고하세요LC_TIME=기입. 내 영어는 호주어입니다.en_AU.UTF-8당신의 것은 en_GB_UTF-8일지도 모릅니다
2. 로케일 정의 편집
터미널을 열고 적절한 로캘 정의를 편집하세요.
$ sudo nano /usr/share/i18n/locales/{LC_Time}
예를 들어
$ sudo nano /usr/share/i18n/locales/en_AU
LC_TIME 섹션까지 아래로 스크롤하세요. 내 내용은 다음과 같습니다.
LC_TIME
abday "Sun";"Mon";"Tue";"Wed";"Thu";"Fri";"Sat"
day "Sunday";/
"Monday";/
"Tuesday";/
"Wednesday";/
"Thursday";/
"Friday";/
"Saturday"
abmon "Jan";"Feb";/
"Mar";"Apr";/
"May";"Jun";/
"Jul";"Aug";/
"Sep";"Oct";/
"Nov";"Dec"
mon "January";/
"February";/
"March";/
"April";/
"May";/
"June";/
"July";/
"August";/
"September";/
"October";/
"November";/
"December"
d_t_fmt "%a %d %b %Y %T %Z"
d_fmt "%d//%m//%y"
t_fmt "%T"
am_pm "AM";"PM"
t_fmt_ampm "%I:%M:%S %p"
date_fmt "%a %e %b %Y %H:%M:%S %Z"
week 7;19971130;1
END LC_TIME
변경해야 할 것은 date_fmt
항목 뿐입니다.
내 것을 다음에서
date_fmt "%a %e %b %H:%M:%S %Z %Y"
다음 으로 변경했습니다:date_fmt "%a %e %b %Y %H:%M:%S %Z"
파일을 저장하고 편집기를 종료합니다.
3 로케일 재생성
다음을 사용하여 로캘 정의 파일을 다시 컴파일합니다.
$ sudo locale-gen
그게 다야! 이제 date
명령은 기본적으로 기본적으로 입력으로 다시 받아들일 수 있는 형식으로 출력을 제공해야 합니다.
$ date -d "$(date)"
Mon 17 Aug 2020 17:58:37 AWST