Python 中的 datetime.fromtimestamp(os.path.getctime()) 会给我一个时区感知值吗?

Does datetime.fromtimestamp(os.path.getctime()) in Python give me a timezone-aware value?

我在 Python 3.4:

中使用这样的调用
x = datetime.fromtimestamp(os.path.getctime(somefilename))
y = datetime.fromtimestamp(os.path.getmtime(somefilename))

xy 是否会根据 the definition of that term in the datetime documentation 识别时区?这是否因平台而异?我假设理论上文件的 ctime 和 mtime 是根据 UTC 纪元以来的秒数来衡量的,所以答案应该是肯定的?

如果是这样,在 all/most POSIX 平台上也是如此吗?具体来说,在现代 Linux/OS X 上是否如此?

如果不是,有没有更好的方法来处理这个问题?如何获得时区感知的 ctime 和 mtime 数据? expressing/storing ctime 和 mtime 平台使用什么时区?

在 OSX 上,至少 os.path.getctime returns 系统时区中的 TZ 原始日期时间。

$ date
Mon Jun  8 15:08:40 PDT 2015

$ touch new_file
$ python  
>>> from datetime import datetime
>>> import os
>>> datetime.fromtimestamp(os.path.getctime('new_file'))
datetime.datetime(2015, 6, 8, 15, 8, 42)
>>> print datetime.fromtimestamp(os.path.getctime('new_file')).tzinfo
None

time.timezone 将为您提供以秒为单位的本地时区偏移量,不考虑 DSTpytz 库可能对您非常有用。

os.path.getctime() returns 表示 "seconds since epoch" 的浮点数(time.time() 返回的值)——它不是天真的日期时间对象。

datetime.fromtimestamp() returns 表示本地时间的原始日期时间对象除非 将显式 tzinfo 对象作为第二个参数传递,