programing

셸 스크립트의 YYY-MM-DD 형식 날짜

lastcode 2023. 4. 17. 21:55
반응형

셸 스크립트의 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)

%Foption은 에일리어스입니다%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보다 훨씬 빠르다dateBash의 빌트인이기 때문에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

반응형