Linux에서 어제 날짜 가져오기
Bash는 널리 사용되는 Linux용 셸 및 명령줄 인터페이스이며 날짜 및 시간 작업을 위한 많은 유용한 도구와 기능을 제공합니다. 이 기사에서는 Linux의 Bash에서 어제 날짜를 가져오는 여러 가지 접근 방식을 살펴보고 날짜가 DST 안전(일광 절약 시간제 안전)인지 확인하는 방법에 대해서도 설명합니다.
date
명령을 사용하여 Linux에서 어제 날짜 가져오기
Bash에서 어제 날짜를 얻는 가장 간단한 방법 중 하나는 date
명령을 사용하는 것입니다. 이 명령을 사용하면 다양한 방법으로 현재 날짜 및 시간의 출력 형식을 지정하고 필요한 형식으로 날짜를 표시하는 데 사용할 수 있습니다.
예를 들어 YYYY-MM-DD
형식으로 어제 날짜를 가져오려면 다음 명령을 사용할 수 있습니다.
date -d "yesterday" +%F
출력:
2022-11-26
이 명령은 -d
옵션을 사용하여 날짜 문자열(이 경우 "yesterday"
)을 지정하고 +%F
형식 지정자를 사용하여 YYYY-MM-DD
형식으로 날짜를 인쇄합니다. 그러면 2022년 11월 26일의 2022-11-26
과 같이 지정된 형식으로 어제 날짜가 반환됩니다.
그러나 이 방법에는 몇 가지 제한 사항이 있습니다. 예를 들어 시스템의 현지 시간대에 의존하며 일광 절약 시간(DST)을 고려하지 않습니다.
이는 날짜가 DST 전환 기간에 속하는 경우 결과가 정확하지 않을 수 있음을 의미합니다. 이 문제를 해결하기 위해 DST를 고려한 다른 접근 방식을 사용할 수 있습니다.
이를 수행하는 방법은 date
명령과 함께 -u
옵션을 사용하는 것입니다. 이 옵션은 현지 시간대 대신 UTC 시간대를 사용하도록 지시합니다. 이렇게 하면 날짜가 고정 시간대를 사용하여 계산되고 DST 전환 문제가 방지됩니다.
다음은 이 옵션을 사용하여 YYYY-MM-DD
형식으로 어제 날짜를 가져오는 예입니다.
date -u -d "yesterday" +%F
출력:
2022-11-26
이 명령은 이전 명령과 유사하지만 UTC 시간대를 사용하기 위해 -u
옵션을 추가합니다. 이렇게 하면 지정된 형식으로 어제 날짜가 반환되지만 현지 시간대 대신 UTC 시간대를 사용하여 계산됩니다.
tz
변수를 사용하여 Linux에서 어제 날짜 가져오기
Bash에서 tz
환경 변수는 표준이 아닙니다. 시스템의 시간대를 저장하는 데 사용할 수 있는 사용자 정의 변수입니다.
이 값은 시간대를 사용하여 날짜 및 시간을 계산하거나 표시하는 프로그램에서 사용할 수 있습니다.
예를 들어 TZ
변수를 "America/Los_Angeles"
또는 "Europe/Paris"
와 같은 시간대 문자열로 설정하여 원하는 시간대를 지정할 수 있습니다. 시간대 문자열의 형식과 내용은 시스템과 사용하는 시간대 데이터베이스에 따라 다를 수 있습니다.
tz
변수와 $EPOCHSECONDS
변수를 사용하여 어제 날짜를 얻을 수 있습니다.
printf -v tz '%(%z)T' -1
TZ=$tz printf -v yesterday '%(%Y-%m-%d)T' $(( EPOCHSECONDS - 86400 ))
echo $yesterday
출력:
2022-11-26
이 코드는 시스템의 시간대를 설정하고 지정된 형식(YYYY-MM-DD
)으로 전날 날짜를 인쇄합니다. printf
명령의 -v
플래그는 명령의 출력을 변수에 할당합니다(시간대는 tz
, 전날 날짜는 yesterday
).
첫 번째 printf
명령에 대한 -1
인수는 시스템의 현재 시간대를 지정합니다. 두 번째 printf
명령은 TZ
환경 변수를 사용하여 시간대를 설정하고 $(( POCHSECONDS - 86400 ))
식을 사용하여 전날 날짜를 epoch 시간(경과된 초 수)으로 계산합니다. 1970년 1월 1일부터).
%(%Y-%m-%d)T
형식 문자열은 원하는 날짜 형식을 지정하고 echo
명령은 터미널에 날짜를 인쇄합니다.
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedIn