Я работаю под управлением 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]
я всегда получаю дату незаконный вариант
, почему так?
Может быть, я делаю что-то не так?
Обновление:-
bash-3.00$ date --version
date: illegal option -- version
usage: date [-u] mmddHHMM[[cc]yy][.SS]
date [-u] [+format]
date -a [-]sss[.fff]
Попробуйте вот это:
DATE_STAMP=`TZ=GMT+24 date +%Y%m%d`
где GMT - часовой пояс, и вам может понадобиться изменить 24 в соответствии с разницей в часах, которую вы имеете с GMT. Либо вы можете изменить GMT на более удобный для вас часовой пояс, например, CST.
Как предложил 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