6

SunOS を実行しています。

bash-3.00$ uname -a
SunOS lvsaishdc3in0001 5.10 Generic_142901-02 i86pc i386 i86pc

Yesterday's date in linuxコマンドプロンプトから渡された適切なフォーマットで見つける必要があります。シェルプロンプトでこのように試したとき-

bash-3.00$ date --date='yesterday' '+%Y%m%d'
date: illegal option -- date=yesterday
usage:  date [-u] mmddHHMM[[cc]yy][.SS]
        date [-u] [+format]
        date -a [-]sss[.fff]

私はいつも date を取得しますillegal optionが、なぜそうなのですか? 私がやっていることは何か間違っていますか?

アップデート:-

bash-3.00$ date --version
date: illegal option -- version
usage:  date [-u] mmddHHMM[[cc]yy][.SS]
        date [-u] [+format]
        date -a [-]sss[.fff]
4

7 に答える 7

10

以下のことを試してください。それはうまくいくはずです

YESTERDAY=`TZ=GMT+24 date +%Y%m%d`; echo $YESTERDAY
于 2012-08-07T22:52:44.960 に答える
3

これを試してください:

DATE_STAMP=`TZ=GMT+24 date +%Y%m%d`

ここで、GMT はタイム ゾーンであり、GMT との時間差に応じて 24 を変更する必要がある場合があります。それか、GMT をより快適なタイムゾーン (CST など) に変更できます。

于 2012-08-07T22:55:01.957 に答える
2

純粋な bash ソリューション

#!/bin/bash                                                                                                                                                              

# get and split date                                                                                                                                                     
today=`date +%Y%m%d`
year=${today:0:4}
month=${today:4:2}
day=${today:6:2}

# avoid octal mismatch                                                                                                                                                   
if (( ${day:0:1} == 0 )); then day=${day:1:1}; fi
if (( ${month:0:1} == 0 )); then month=${month:1:1}; fi

# calc                                                                                                                                                                   
day=$((day-1))
if ((day==0)); then
    month=$((month-1))
    if ((month==0)); then
        year=$((year-1))
        month=12
    fi
    last_day_of_month=$((((62648012>>month*2&3)+28)+(month==2 && y%4==0)))
    day=$last_day_of_month
fi

# format result                                                                                                                                                          
if ((day<10)); then day="0"$day; fi
if ((month<10)); then month="0"$month; fi
yesterday="$year$month$day"
echo $yesterday
于 2012-08-08T12:36:03.163 に答える
2

larsks が提案したように、perl を使用できます。

perl -e 'use POSIX qw(strftime); print strftime "%a %b %e %H:%M:%S %Y",localtime(time()- 3600*24);'

からわずかに変更された

http://blog.rootshell.be/2006/05/04/solaris-yesterday-date/

YYYYMMDD 形式を取得するには、これを使用します

perl -e 'use POSIX qw(strftime); print strftime "%Y%m%d",localtime(time()- 3600*24);'

このリンクは、strftime で日付と時刻をフォーマットする方法を説明しています

http://perltraining.com.au/tips/2009-02-26.html

于 2012-08-07T22:57:34.450 に答える
1

TZ=$TZ+24 date +'%Y/%m/%d'SunOS で。

于 2015-12-16T20:44:50.100 に答える