Bash에서 현재 시간 전날의 날짜를 어떻게 인쇄합니까?
--date
또는 -d
옵션은 GNU 날짜에서만 사용할 수 있습니다
Bash에서 현재 시간 전날의 날짜를 어떻게 인쇄합니까?
--date
또는 -d
옵션은 GNU 날짜에서만 사용할 수 있습니다
답변:
GNU 날짜를 가지고 있고 당신을 올바르게 이해했다면
$ date +%Y:%m:%d -d "yesterday"
2009:11:09
또는
$ date +%Y:%m:%d -d "1 day ago"
2009:11:09
date -v-1d
OSX에서 (빼기), -v+1d
(플러스)
date_days_past () { days_past=${1:-0}; if ! date -v-${days_past}d +%Y%m%d 2>/dev/null; then date --date="-${days_past} day" +%Y%m%d; fi }
date --date='-1 day'
date: illegal option -- -
date
하려면 coreutils
패키지를 통해 사용 가능한 GNU 버전의을 설치해야합니다 . Homebrew를 사용하는 경우을 통해 설치할 brew install coreutils
수 있으며 gdate
명령을 통해 GNU 날짜를 사용할 수 있습니다 . 참조 : topbug.net/blog/2013/04/14/...
맥 OS X
어제 날짜 :
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
솔라리스 시스템에 대해 언급하지 않아서 죄송합니다. 따라서 -date 스위치는 Solaris bash에서 사용할 수 없습니다.
나는 시간대에 약간의 트릭으로 이전 날짜를 얻을 수 있다는 것을 알았습니다.
DATE=`TZ=MYT+16 date +%Y-%m-%d_%r`
echo $DATE
bash $(TZ=America/New_York date +%Y-%m-%d)
아마도 펄을 사용 하시겠습니까?
perl -e 'print scalar localtime( time - 86400 ) . "\n";'
또는 nawk 및 (ab) use / 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'
#!/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
1 July , 2013
, 결과는 인쇄되고 2013-6-1347
예상 된 결과 인 반면,2013-6-30
echo $(cal $month $year)|tr ' ' '\n'|tail -n 1
"를 시도하십시오
date -d "yesterday" '+%Y-%m-%d'
또는
date=$(date -d "yesterday" '+%Y-%m-%d')
echo $date
date: illegal option: -d
Solaris에서 발생합니다. GNU 가 아닌 Solaris 플랫폼에 대한 질문은 POSIX 표준 date
유틸리티 의 이식 불가능한 GNU 확장에 의존 합니다.
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
date +%Y:%m:%d|awk -vFS=":" -vOFS=":" '{$3=$3-1;print}'
2009:11:9