Python中的datetime.fromtimestamp(os.path.getctime())是否为我提供了时区感知值?

时间:2015-06-08 21:53:39

标签: python unix datetime timezone epoch

我在Python 3.4中使用这样的调用:

x = datetime.fromtimestamp(os.path.getctime(somefilename))
y = datetime.fromtimestamp(os.path.getmtime(somefilename))

根据the definition of that term in the datetime documentationxy会是时区感知的吗?这是因平台而异吗?我假设理论上文件的ctime和mtime是根据UTC时代以来的秒数来衡量的,所以答案应该是肯定的吗?

如果是这样,那么在所有/大多数POSIX平台上都是如此吗?具体来说,在现代Linux / OS X上是否属实?

如果没有,有没有更好的方法来解决这个问题?如何获得时区感知的ctime和mtime数据?平台用什么时区来表达/存储ctime和mtime?

2 个答案:

答案 0 :(得分:1)

至少在OSX上,os.path.getctime会在系统的时区中返回一个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将以秒为单位为您提供本地时区偏移量,不计入DST pytz库可能对您非常有用。

答案 1 :(得分:0)

os.path.getctime()返回一个浮点数,表示“自纪元以来的秒数”(由time.time()返回的值) - 它不是天真的对象或其他日期时间。

datetime.fromtimestamp()返回一个天真的日期时间对象,表示本地时间,除非您将显式tzinfo对象作为第二个参数code example传递。