2016-09-06 6 views
12

stat()から取得した変更時刻から変換するのに最も慣用的で効率的な方法は、datetimeオブジェクトを呼び出すことですか?私は、次の(のpython3)を思い付いた:stat()。st_mtimeからdatetimeへ?

from datetime import datetime, timedelta, timezone 
from pathlib import Path 

path = Path('foo') 
path.touch() 
statResult = path.stat() 
epoch = datetime(1970, 1, 1, tzinfo=timezone.utc) 
modified = epoch + timedelta(seconds=statResult.st_mtime) 
print('modified', modified) 

は、私はそこにハードコードにUnixエポックを持っていることを試合のラウンドようで、少し意外。より直接的な方法はありますか?

答えて

20

datetime.fromtimestamp(statResult.st_mtime)

例えばをお試しください

+5

これは、 'datetime' _class_の関数ではなく、' datetime' _class_の代わりのコンストラクタ( 'classmethod')です。ですから、ファイルの先頭に 'import datetime'があれば' datetime.datetime.fromtimestamp(...) 'が必要です。また、OPが 'os.path'ではなく' pathlib'を使用しているので、 'Path()。stat()。st_mtime';でなければなりません。彼らは 'os'をインポートすることさえなかったので、' os.path'から 'path.getmtime'を使うことは、OPの文脈で少し混乱するかもしれません。 – ShadowRanger

+1

私は、datetimeがimport datetimeで2回使われていることを表示するように修正しました。 – CashCow

関連する問題