web-dev-qa-db-fra.com

De stat (). St_mtime à datetime?

Quelle est la façon la plus idiomatique/efficace de convertir d'un temps de modification récupéré de l'appel de stat() en un objet datetime? J'ai trouvé ce qui suit (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)

Semble autour d'un combat, et un peu surprenant que je doive coder en dur l'époque Unix là-dedans. Existe-t-il un moyen plus direct?

26
Travis Griggs

Essayez datetime.fromtimestamp (statResult.st_mtime)

par exemple.

import datetime

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

Cela fonctionne pour moi si vous voulez une chaîne lisible:

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