在Unix中获取前一天的日期

时间:2013-05-21 04:29:35

标签: shell date solaris unix-timestamp

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

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

我在凌晨执行命令时正确分配了值。 但是在夜间(晚上9点左右),我没有得到前一天的日期,但与今天的日期相同。

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

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

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

4 个答案:

答案 0 :(得分:5)

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

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

所以你只需键入“昨天”,就不必对date做一些特殊的事情。很酷,不是吗?

答案 1 :(得分:1)

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

date +%Y/%m/%d --date="yesterday"

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

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

您的Solaris SysAdmin可能已经为您提供了一个残缺的主机,默认情况下不会安装GNU coreutils(GNU日期是该程序包的一部分)。对他感到羞耻。

有关this link上Solaris主机应该的更多信息。该链接包含Solaris 10和Solaris 11的信息。