2015-06-08 92 views
2

我使用調用像這樣在Python 3.4:Python中的datetime.fromtimestamp(os.path.getctime())是否給我一個時區感知值?

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以來的秒數來衡量的,所以答案應該是肯定的?

如果是這樣,那麼在所有/大多數POSIX平臺上都是如此嗎?具體來說,在現代Linux/OS X上是否屬實?

如果沒有,是否有更好的方法來處理這個問題?我如何獲得時區感知的ctime和mtime數據?平臺使用什麼時區來表達/存儲ctime和mtime?

回答

1

在OSX上,至少os.path.getctime會在系統時區中返回一個TZ-naive datetime。

$ 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庫可能對你非常有用。

0

os.path.getctime()返回一個表示「自紀元以來的秒數」(由time.time()返回的值)的浮點數 - 它不是日期時間天體或其他對象。

datetime.fromtimestamp()返回表示除非你通過明確tzinfo對象作爲第二個參數,code example當地時間天真的DateTime對象。

相關問題