我正在使用以下代码将前一天的日期分配给昨天的变量:
yesterday=`TZ=GMT+24 date +%Y%m%d`;
echo $yesterday;
当我在清晨执行命令时,该值被正确分配。但是在夜间(晚上 9 点左右),我得到的不是前一天的日期,而是与今天相同的日期。
我的服务器位于 PDT 时区。我尝试“TZ=PDT+24”进行分配,但得到了相同的结果。
仅供参考,我使用的是 Solaris 5.10。
这种奇怪情况的原因是什么?
我正在使用以下代码将前一天的日期分配给昨天的变量:
yesterday=`TZ=GMT+24 date +%Y%m%d`;
echo $yesterday;
当我在清晨执行命令时,该值被正确分配。但是在夜间(晚上 9 点左右),我得到的不是前一天的日期,而是与今天相同的日期。
我的服务器位于 PDT 时区。我尝试“TZ=PDT+24”进行分配,但得到了相同的结果。
仅供参考,我使用的是 Solaris 5.10。
这种奇怪情况的原因是什么?
我无法对 solaris 进行精确测试。但在 linux 上,这适用于最后一天(昨天):
kent$ date -d'yesterday' +%Y%m%d
20130520
所以你只需输入“昨天”,你不必对date
. 很酷,不是吗?
在 Solaris 上,只需使用 GNU 日期而不是 Solaris 版本。访问而gdate
不是date
. 然后你只需做
gdate -d'yesterday' +%Y%m%d
您的 Solaris 系统管理员可能为您提供了一个残缺的主机,默认情况下未安装 GNU coreutils(GNU 日期是该软件包的一部分)。可耻。
有关 Solaris 主机外观的更多信息,请访问此链接。该链接包含 Solaris 10 和 Solaris 11 的信息。
对于 Unix OS,这对我来说很好
date +%Y/%m/%d --date="yesterday"
日期“-v”中有一个特殊变量,您可以添加 -v -1d 来检索前一天的记录。我相信它在 Solaris 上也应该可以正常工作。PDT 时区可能不是问题。
所以像 date -v -1d 这样的命令会给你昨天的日期。