2

我正在使用以下代码将前一天的日期分配给昨天的变量:

yesterday=`TZ=GMT+24 date +%Y%m%d`;
echo $yesterday;

当我在清晨执行命令时,该值被正确分配。但是在夜间(晚上 9 点左右),我得到的不是前一天的日期,而是与今天相同的日期。

我的服务器位于 PDT 时区。我尝试“TZ=PDT+24”进行分配,但得到了相同的结果。

仅供参考,我使用的是 Solaris 5.10。

这种奇怪情况的原因是什么?

4

4 回答 4

5

我无法对 solaris 进行精确测试。但在 linux 上,这适用于最后一天(昨天):

kent$ date -d'yesterday' +%Y%m%d
20130520

所以你只需输入“昨天”,你不必对date. 很酷,不是吗?

于 2013-05-21T09:46:48.600 回答
1

在 Solaris 上,只需使用 GNU 日期而不是 Solaris 版本。访问而gdate不是date. 然后你只需做

gdate -d'yesterday' +%Y%m%d

您的 Solaris 系统管理员可能为您提供了一个残缺的主机,默认情况下未安装 GNU coreutils(GNU 日期是该软件包的一部分)。可耻。

有关 Solaris 主机外观的更多信息,请访问此链接。该链接包含 Solaris 10 和 Solaris 11 的信息。

于 2013-10-11T08:30:59.523 回答
1

对于 Unix OS,这对我来说很好

date +%Y/%m/%d --date="yesterday"
于 2015-05-21T07:53:52.320 回答
0

日期“-v”中有一个特殊变量,您可以添加 -v -1d 来检索前一天的记录。我相信它在 Solaris 上也应该可以正常工作。PDT 时区可能不是问题。

所以像 date -v -1d 这样的命令会给你昨天的日期。

于 2013-10-01T18:04:07.310 回答