내 bash 셸 스크립트에서 $(date)
를 사용하려고 시도했지만 YYYY-MM-DD
형식의 날짜를 원합니다.
어떻게 해야 하나요?
질문자 :Kapsh
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
'etc. > StackOverFlow' 카테고리의 다른 글
Python에서 객체가 반복 가능한지 어떻게 확인합니까? (1) | 2023.04.28 |
---|---|
두 날짜(일수)의 차이를 계산하시겠습니까? (1) | 2023.04.28 |
JavaScriptSerializer - 열거형을 문자열로 JSON 직렬화 (0) | 2023.04.28 |
출력을 파일 및 표준 출력으로 리디렉션하는 방법 (0) | 2023.04.28 |
Vim에서 remap, noremap, nnoremap 및 vnoremap 매핑 명령의 차이점은 무엇입니까? (0) | 2023.04.28 |