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))
x
和 y
是否会根据 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
将为您提供以秒为单位的本地时区偏移量,不考虑 DST。 pytz 库可能对您非常有用。
os.path.getctime()
returns 表示 "seconds since epoch" 的浮点数(time.time()
返回的值)——它不是天真的日期时间对象。
datetime.fromtimestamp()
returns 表示本地时间的原始日期时间对象除非 将显式 tzinfo 对象作为第二个参数传递,。
我在 Python 3.4:
中使用这样的调用x = datetime.fromtimestamp(os.path.getctime(somefilename))
y = datetime.fromtimestamp(os.path.getmtime(somefilename))
x
和 y
是否会根据 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
将为您提供以秒为单位的本地时区偏移量,不考虑 DST。 pytz 库可能对您非常有用。
os.path.getctime()
returns 表示 "seconds since epoch" 的浮点数(time.time()
返回的值)——它不是天真的日期时间对象。
datetime.fromtimestamp()
returns 表示本地时间的原始日期时间对象除非 将显式 tzinfo 对象作为第二个参数传递,