web-dev-qa-db-ja.com

stat()。st_mtimeからdatetimeまで?

stat()呼び出しから取得した変更時間をdatetimeオブジェクトに変換する最も慣用的/効率的な方法は何ですか?私は次の(python3)を思いついた:

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エポックをハードコーディングしなければならないことに少し驚いています。もっと直接的な方法はありますか?

26
Travis Griggs

試す datetime.fromtimestamp(statResult.st_mtime)

例えば.

import datetime

mod_timestamp = datetime.datetime.fromtimestamp(path.getmtime(<YOUR_PATH_HERE>))
37
Take_Care_

読み取り可能な文字列が必要な場合、これは私のために機能します:

import datetime
mtime = path.stat().st_mtime
timestamp_str = datetime.datetime.fromtimestamp(mtime).strftime('%Y-%m-%d-%H:%M')
0
Sam Shleifer