【发布时间】:2015-05-08 08:56:02
【问题描述】:
文件系统是否将时区信息与文件信息一起存储?我遇到了一个奇怪的错误,我执行以下 sn-p 并打印出不同的时区。
import DateTime #zope's module
for each in os.listdir("director"):
print DateTime.DateTime(os.stat(each)[8])
#Why is it mixed up?
Foo 12:00:00 US/Eastern
Bar 12:00:00 GMT -4
在进行夏令时更改后开始发生这种情况。我看到东部和格林威治标准时间 -4 两者。 IIRC Linux 不存储时间戳信息,而是将时间存储为从 1970 年 1 月 1 日开始经过的绝对秒数。
是否有可能某些文件系统存储时区信息?我被告知 DST(夏令时)是通过使用不同的时区来表示的。那么在夏令时或一般情况下 - 这些元数据是否由文件系统存储?
例如:https://rsync.samba.org/daylight-savings.htm 指出 FAT 存储夏令时信息。
由于根据接受的答案,两者都是相同的时区,是否可以将 GMT -4 显示为东部夏令时,以便最终用户清楚地了解情况?
【问题讨论】:
-
确定不是
DateTime构造函数引入时区信息? -
我看到混合结果 - 有些文件是 GMT -4,有些是美国/东部 - 如果是构造函数这样做,那么它必须是东部或 GMT 对吗?
-
另外,您提供的链接实际上并没有说 FAT 存储 DST 信息;它说 FAT 以当地时间存储时间戳。
-
Zope DateTime 文档说没有指定时区的呼叫将使用机器的时区。我不确定它如何与 DST 交互,但如果机器的时区在两次调用之间发生变化,您会在输出中看到不同的时区。
-
这只是一个猜测,但 Zope 中可能有些东西错误地假设 GMT-5 == 美国/东部。请参阅the timezone tag wiki 中的“时区!= 偏移量”。