我在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 documentation,x
和y
会是时区感知的吗?这是因平台而异吗?我假设理论上文件的ctime和mtime是根据UTC时代以来的秒数来衡量的,所以答案应该是肯定的吗?
如果是这样,那么在所有/大多数POSIX平台上都是如此吗?具体来说,在现代Linux / OS X上是否属实?
如果没有,有没有更好的方法来解决这个问题?如何获得时区感知的ctime和mtime数据?平台用什么时区来表达/存储ctime和mtime?
答案 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传递。