我有两个文件,我需要更改它们的最后修改日期:两者都应该是午夜,一个是 6 月 25 日,另一个是 11 月 25 日。基本上是这样的:
touch -cmt 201606242359.60 summer-file
touch -cmt 201611242359.60 winter-file
我们的服务器时区是“欧洲/马德里”,因此我们享受夏令时:冬季采用 UTC+1,夏季采用 UTC+2。这意味着如果我现在运行上述命令,它们会设置冬季档案日期正确,但是夏季档案提前一小时:6 月 24 日 23:00。如果我在夏天运行它们,我想夏季档案一个是 OK,另一个是 1:00 而不是 0:00。
后谷歌搜索一下经过更多的尝试和错误,我想出了这个:
TZ=ZZZ-1 touch -cmt 201606242359.60 summer-file
TZ=ZZZ-1 touch -cmt 201611242359.60 winter-file
它按照预期正确地将两个文件的日期设置为 0:00。问题是...我真的不知道我在这里做什么。将时区更改为ZZZ-1
,因为……魔法?或者...它是 -1 因为我们目前处于 UTC+1?明年三月,当我们切换到 DST 时,我们的服务器将比 UTC 早 2 小时,而不是 1 小时。我应该使用那个时间ZZZ-2
,还是仍然ZZZ-1
可以? (我会更改服务器日期并尝试自己,但我不允许这样做,这会破坏一些东西)。
如果我ZZZ-2
在夏天需要......是否可以设置另一种表达方式TZ=
,以使我的触摸在全年和任何目标日期都能正常工作?我尝试过GMT
,UTC
和UTC0
,他们都没有工作(他们都将我的夏季档案设置为 1:00)。
命令以编程方式生成(在 Siebel CRM 中),我想我可以检查当前日期并设置TZ=ZZZ-1
或TZ=ZZZ-2
根据需要(如果需要),但我宁愿只有一种表达方式。
另外,请注意我们的服务器运行的是 Solaris 10,以防出现任何差异。它通常会...