etc./StackOverFlow

쉘 스크립트의 YYYY-MM-DD 형식 날짜

청렴결백한 만능 재주꾼 2023. 4. 28. 04:05
반응형

질문자 :Kapsh


내 bash 셸 스크립트에서 $(date) 를 사용하려고 시도했지만 YYYY-MM-DD 형식의 날짜를 원합니다.
어떻게 해야 하나요?



date (보통 GNU 날짜)보다 printf의 내장 날짜 포맷터(bash의 일부)를 사용하는 것이 좋습니다.

다음과 같이:

 # put current date as yyyy-mm-dd in $date # -1 -> explicit current date, bash >=4.3 defaults to current time if not provided # -2 -> start time for shell printf -v date '%(%Y-%m-%d)T\n' -1 # put current date as yyyy-mm-dd HH:MM:SS in $date printf -v date '%(%Y-%m-%d %H:%M:%S)T\n' -1 # to print directly remove -v flag, as such: printf '%(%Y-%m-%d)T\n' -1 # -> current date printed to terminal

bash에서(<4.2):

 # put current date as yyyy-mm-dd in $date date=$(date '+%Y-%m-%d') # put current date as yyyy-mm-dd HH:MM:SS in $date date=$(date '+%Y-%m-%d %H:%M:%S') # print current date directly echo $(date '+%Y-%m-%d')

다른 사용 가능한 날짜 형식은 날짜 매뉴얼 페이지 에서 볼 수 있습니다(bash가 아닌 외부 명령의 경우):

 man date

Philip Fourie

시도: $(date +%F)

%F %Y-%m-%d 의 별칭입니다.


kwatford

다음과 같이 할 수 있습니다.

 $ date +'%Y-%m-%d'

lutz

ISO 8601 표준 날짜 형식을 찾고 있으므로 GNU 날짜(또는 1988년보다 최신 날짜 명령)가 있는 경우 다음을 수행하십시오. $(date -I)


Medievalist

$(date +%F)

산출

 2018-06-20

또는 시간이 필요한 경우:

 $(date +%F_%H-%M-%S)

사이에 콜론(:)을 제거하는 데 사용할 수 있습니다.

산출

 2018-06-20_09-55-58

ahmettolga

date -d '1 hour ago' '+%Y-%m-%d'

출력은 2015-06-14 입니다.


xu2mao

최근 Bash(버전 ≥ 4.2)에서는 형식 수정자와 함께 printf %(strftime_format)T :

 $ printf '%(%Y-%m-%d)T\n' -1 # Get YYYY-MM-DD (-1 stands for "current time") 2017-11-10 $ printf '%(%F)T\n' -1 # Synonym of the above 2017-11-10 $ printf -v date '%(%F)T' -1 # Capture as var $date

printf 는 Bash 내장이고 date 는 외부 명령 date 보다 훨씬 빠릅니다.

또한, printf -v date ... 는 subshell을 분기할 필요가 없기 때문에 date=$(printf ...) 보다 빠릅니다.


wjandrea

다음 공식을 사용합니다.

 TODAY=`date -I` echo $TODAY

date 에 대한 매뉴얼 페이지를 확인하십시오. 다른 유용한 옵션이 많이 있습니다.

 man date

Luís de Sousa

2017이 아닌 17과 같은 두 가지 숫자 형식으로 연도를 표시하려면 다음을 수행하십시오.

 DATE=`date +%d-%m-%y`

Crt

나는 이런 일을 할 때마다 결국 뒤로 물러난다.

 $ man strftime

시간 형식 옵션에 대한 모든 가능성을 상기시키십시오.


arp

시간과 시간에 $(date +"%Y-%m-%d") 또는 $(date +"%Y-%m-%d %T")


Miguel

다음 명령을 사용해 보십시오.

 date | cut -d " " -f2-4 | tr " " "-"

출력은 다음과 같습니다. 21-Feb-2021


Abdallah_98

#!/bin/bash -e x='2018-01-18 10:00:00' a=$(date -d "$x") b=$(date -d "$a 10 min" "+%Y-%m-%d %H:%M:%S") c=$(date -d "$b 10 min" "+%Y-%m-%d %H:%M:%S") #date -d "$a 30 min" "+%Y-%m-%d %H:%M:%S" echo Entered Date is $x echo Second Date is $b echo Third Date is $c

여기서 x는 사용된 샘플 날짜이고 예제는 데이터 형식과 현재 날짜보다 10분 더 많은 날짜를 모두 표시합니다.


ankitbaldua

날짜를 환경 변수로 설정할 수 있으며 나중에 사용할 수 있습니다.

 setenv DATE `date "+%Y-%m-%d"` echo "----------- ${DATE} -------------"

또는

 DATE =`date "+%Y-%m-%d"` echo "----------- ${DATE} -------------"

Farid Haq

출처 : http:www.stackoverflow.com/questions/1401482/yyyy-mm-dd-format-date-in-shell-script

반응형