如何在kshell中获取前几天的日期

时间:2014-03-22 11:31:39

标签: linux bash unix ksh aix

我有一个命令,它给出了前几天的日期:

date -d '-1 day' '+%Y%d%m'

在AIX系统中运行时,同一命令出错。

“ - d无法识别标志”

下面的命令正在运行,它给出了当前的日期AIX系统。

date -u +%Y%d%m

但低于命令给出错误为“1无法识别标志”

date -u '-1 day' +%Y%d%m

如何在AIX中获取前几天的日期。

3 个答案:

答案 0 :(得分:1)

date是一个程序,而不是shell的内置命令。因此,无论使用何种shell,它都应该有效。

falsetru@ubuntu:~$ bash
falsetru@ubuntu:~$ date -d '-1 day' '+%Y%d%m'
20142103
falsetru@ubuntu:~$ ksh
$ date -d '-1 day' '+%Y%d%m'
20142103
$ type date
date is a tracked alias for /bin/date

答案 1 :(得分:1)

操作时区可以在几个小时内更改时钟。 更加复杂的是夏令时。由于夏令时,24小时前可以是今天或前天。

你确定昨天是20或30小时前。哪一个?嗯,最近的一个不是今天。

echo "$(TZ=GMT+30 date +%Y-%m-%d)\n$(TZ=GMT+20 date +%Y-%m-%d)" | grep -v $(date +%Y-%m-%d) | tail -1

以上命令适用于ksh。当你使用bash时,你需要echo -e:

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

答案 2 :(得分:0)

date -dGNU主义,因此在非GNU实施中不可用,例如vanilla AIX date。但是,您可以在coreutils附带的AIX上安装GNU date(下载链接here)。