날짜(현재 시간 하루 전)를 Bash로 가져옵니다.
현재 시간보다 하루 전인 Bash의 날짜를 인쇄하려면 어떻게 해야 합니까?
만약 당신이 GNU 날짜를 가지고 있고 내가 당신을 올바르게 이해했다면요.
$ date +%Y:%m:%d -d "yesterday"
2009:11:09
또는
$ date +%Y:%m:%d -d "1 day ago"
2009:11:09
BSD(OSX)가 있는 경우date다음과 같이 할 수 있습니다.
date -j -v-1d
Wed Dec 14 15:34:14 CET 2011
또는 임의의 날짜에 날짜 계산을 수행하려는 경우:
date -j -v-1d -f "%Y-%m-%d" "2011-09-01" "+%Y-%m-%d"
2011-08-31
date --date='-1 day'
MAC OSX
어제 날짜:
date -v-1d +%F
여기서 1d는 현재 날짜에서 1일을 뺀 값을 정의합니다.유사하게,
날짜 -v-1w +%F - 이전 주 날짜
날짜 -v-1m +%F - 전월 날짜
GNU 날짜가 있다면,
date --date="1 day ago"
더 많은 정보: https://www.cyberciti.biz/tips/linux-unix-get-yesterdays-tomorrows-date.html
Solaris 시스템에서 I를 언급하지 않아서 죄송합니다.따라서 -date 스위치는 Solaris bash에서 사용할 수 없습니다.
저는 시간대에 대한 트릭이 거의 없이 이전 날짜를 얻을 수 있다는 것을 알게 되었습니다.
DATE=`TZ=MYT+16 date +%Y-%m-%d_%r`
echo $DATE
글쎄요, 이것은 늦은 답변이지만, 이것은 효과가 있는 것 같습니다!
YESTERDAY=`TZ=GMT+24 date +%d-%m-%Y`;
echo $YESTERDAY;
date +%Y:%m:%d -d "yesterday"
날짜 형식에 대한 자세한 내용은 날짜에 대한 관리 페이지를 참조하십시오.
date --date='-1 day'
date -d "yesterday" '+%Y-%m-%d'
또는
date=$(date -d "yesterday" '+%Y-%m-%d')
echo $date
대신 Perl을 사용하시겠습니까?
perl -e 'print scalar localtime( time - 86400 ) . "\n";'
또는 nawk를 사용하고 (ab) /usr/bin/adb를 사용합니다.
nawk 'BEGIN{printf "0t%d=Y\n", srand()-86400}' | adb
이것도 우연히 발견했어요...미친!
/usr/bin/truss /usr/bin/date 2>&1 | nawk -F= '/^time\(\)/ {gsub(/ /,"",$2);printf "0t%d=Y\n", $2-86400}' | adb
date --date='-1 day'
그다지 섹시하지는 않지만, 그 일을 해낼 수 있습니다.
perl -e 'my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time - 86400);$year += 1900; $mon+= 1; printf ("YESTERDAY: %04d%02d%02d \n", $year, $mon, $mday)'
"마틴 클레이튼" 답변에서 형성됩니다.
선택한 날짜 형식이 'YYYYMM'인 경우 정규식을 사용하여 간단한 계산을 수행할 수 있습니다.
echo $(($(date +"%Y%m") - 1)) | sed -e 's/99$/12/'
2020년 1월에 201912;-)를 반환할 예정이지만, 날짜에 계산 옵션과 다른 날짜 인터프리터 옵션(예: 펄 사용)을 사용할 수 없는 경우에는 해결책일 뿐입니다;-)
단답형(GNU 형식):
date +%Y-%m-%d -d "-2 day"
OSX를 사용하고 있지만 GNU 호환을 위한 생성이 필요한 경우 먼저 coreutils를 설치합니다.
brew install coreutils
그런 다음 다음을 사용하여 프로필을 편집합니다.
#gnu coreutils first
export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
터미널을 다시 시작하면 GNU 형식을 사용할 수 있습니다!
yesterday=`date -d "-1 day" %F`
YYY-MM-DD 형식의 어제 날짜를 변수에 넣습니다.$yesterday.
#!/bin/bash
OFFSET=1;
eval `date "+day=%d; month=%m; year=%Y"`
# Subtract offset from day, if it goes below one use 'cal'
# to determine the number of days in the previous month.
day=`expr $day - $OFFSET`
if [ $day -le 0 ] ;then
month=`expr $month - 1`
if [ $month -eq 0 ] ;then
year=`expr $year - 1`
month=12
fi
set `cal $month $year`
xday=${$#}
day=`expr $xday + $day`
fi
echo $year-$month-$day
DST 인식 솔루션:
시간대를 조작하면 몇 시간 동안 시계를 변경할 수 있습니다.일광 절약 시간으로 인해 24시간 전은 오늘 또는 그저께가 될 수 있습니다.
당신은 어제가 20시간이나 30시간 전이라고 확신합니다.어느 것이요?음, 가장 최근의 것은 오늘이 아닙니다.
echo -e "$(TZ=GMT+30 date +%Y-%m-%d)\n$(TZ=GMT+20 date +%Y-%m-%d)" | grep -v $(date +%Y-%m-%d) | tail -1
echo 명령에 사용되는 -e 매개 변수는 bash에 필요하지만 ksh에서는 작동하지 않습니다.ksh에서 -e 플래그 없이 동일한 명령을 사용할 수 있습니다.
스크립트가 다른 환경에서 사용될 경우 #!/bin/ksh 또는 #!/bin/bash로 스크립트를 시작할 수 있습니다.\n을 새 줄로 바꿀 수도 있습니다.
echo "$(TZ=GMT+30 date +%Y-%m-%d)
$(TZ=GMT+20 date +%Y-%m-%d)" | grep -v $(date +%Y-%m-%d) | tail -1
DST 부분도 처리하는 아래 코드를 사용해 보십시오.
if [ $(date +%w) -eq $(date -u +%w) ]; then
tz=$(( 10#$gmthour - 10#$localhour ))
else
tz=$(( 24 - 10#$gmthour + 10#$localhour ))
fi
echo $tz
myTime=`TZ=GMT+$tz date +'%Y%m%d'`
코트시 앤스가 위처스
date +%Y:%m:%d|awk -vFS=":" -vOFS=":" '{$3=$3-1;print}'
2009:11:9
언급URL : https://stackoverflow.com/questions/1706882/get-the-date-a-day-before-current-time-in-bash
'programing' 카테고리의 다른 글
| 'flutterfire'라는 용어가 cmdlet, 함수, 스크립트 파일 또는 작동 가능한 프로그램의 이름으로 인식되지 않습니다. (0) | 2023.06.04 |
|---|---|
| 루비에서 파일을 읽는 일반적인 방법은 무엇입니까? (0) | 2023.06.04 |
| 반응의 Jquery가 정의되지 않았습니다. (0) | 2023.04.05 |
| 드롭다운 목록의 첫 번째 요소 비우기 (0) | 2023.04.05 |
| JavaScript에서 응답 본문을 다시 읽습니다. (0) | 2023.04.05 |