셸 스크립트의 YYY-MM-DD 형식 날짜
나는 그것을 사용해봤어요.$(date)
하지만 내 bash 쉘 스크립트에서는 날짜를YYYY-MM-DD
포맷합니다.
이거 어떻게 구하지?
bash(>=4.2)에서는 외부보다는 printf의 내장 날짜 포맷터(bash의 일부)를 사용하는 것이 좋습니다.date
(통상은 GNU 날짜).
따라서:
# 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
인배시(<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
시험:$(date +%F)
그%F
option은 에일리어스입니다%Y-%m-%d
다음과 같은 작업을 수행할 수 있습니다.
$ date +'%Y-%m-%d'
$(date +%F)
산출량
2018-06-20
또한 시간을 원하는 경우:
$(date +%F_%H-%M-%S)
중간 콜론(:)을 제거하기 위해 사용할 수 있습니다.
산출량
2018-06-20_09-55-58
ISO 8601 표준 날짜 형식을 찾고 있으므로 GNU 날짜(또는 1988보다 현대적인 날짜 명령)를 사용하는 경우 다음을 수행하십시오.$(date -I)
date -d '1 hour ago' '+%Y-%m-%d'
출력은 다음과 같습니다.2015-06-14
.
최신 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
보다 훨씬 빠르다date
Bash의 빌트인이기 때문에date
는 외부 명령어입니다.
뿐만 아니라.printf -v date ...
보다 빠르다date=$(printf ...)
서브셸을 포킹할 필요가 없기 때문입니다.
다음 식을 사용합니다.
TODAY=`date -I`
echo $TODAY
man 페이지를 체크하다date
그 밖에도 유용한 옵션이 많이 있습니다.
man date
2017년이 아닌 17과 같은 두 숫자 형식으로 연도를 지정하려면 다음을 수행합니다.
DATE=`date +%d-%m-%y`
사용하고 있다$(date +"%Y-%m-%d")
또는$(date +"%Y-%m-%d %T")
시간과 시간을 들여서.
아래 방법을 사용했습니다.여러 가지 방법/답변 감사합니다.
ubuntu@apj:/tmp$ datevar=$(date +'%Y-%m-%d : %H-%M')
ubuntu@apj:/tmp$ echo $datevar
2022-03-31 : 10-48
이런 일이 있을 때마다 나는 결국 다시 돌아가게 된다.
$ man strftime
시간 포맷 옵션에 대한 모든 가능성을 상기시켜줍니다.
다음 명령을 사용해 보십시오.
date | cut -d " " -f2-4 | tr " " "-"
출력은 다음과 같습니다.21-Feb-2021
#!/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분 더 많은 날짜를 표시합니다.
날짜를 환경변수로 설정할 수 있으며 나중에 사용할 수 있습니다.
setenv DATE `date "+%Y-%m-%d"`
echo "----------- ${DATE} -------------"
또는
DATE =`date "+%Y-%m-%d"`
echo "----------- ${DATE} -------------"
echo "`date "+%F"`"
YYY-MM-DD 인쇄
사람이 읽을 수 있는 간단한 타임스탬프에는 다음 코드를 사용해 보십시오.
dt=$(date)
echo $dt
출력:
Tue May 3 08:48:47 IST 2022
언급URL : https://stackoverflow.com/questions/1401482/yyyy-mm-dd-format-date-in-shell-script
'programing' 카테고리의 다른 글
c# 코드로 Data Template를 빌드하려면 어떻게 해야 하나요? (0) | 2023.04.17 |
---|---|
Swift 어레이 할당에 일관성이 없는 이유(레퍼런스나 딥 카피 모두)가 있습니까? (0) | 2023.04.17 |
bash에서 단일 명령을 사용하여 셸 변수에 기본값 할당 (0) | 2023.04.17 |
코드 배후에 있는 콜명령어 (0) | 2023.04.17 |
xlwings 및 python을 사용하여 워크시트 복사 (0) | 2023.04.17 |