我使用以下代码将前一天的日期分配给变量昨天:
yesterday=`TZ=GMT+24 date +%Y%m%d`;
echo $yesterday;
我在凌晨执行命令时正确分配了值。 但是在夜间(晚上9点左右),我没有得到前一天的日期,但与今天的日期相同。
我的服务器位于PDT timezeone中。 我尝试了“TZ = PDT + 24”进行分配,但结果相同。
仅供参考,我使用的是Solaris 5.10。
这种奇怪情况的原因是什么?
答案 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的信息。