Python 从stat().st_mtime到datetime?

Python 从stat().st_mtime到datetime?,python,python-3.x,datetime,stat,pathlib,Python,Python 3.x,Datetime,Stat,Pathlib,将从stat()调用检索到的修改时间转换为datetime对象的最惯用/有效的方法是什么?我想出了以下(蟒蛇3): 似乎有点奇怪,我不得不在这里硬编码Unix时代。有更直接的方法吗?你可以使用,即 如果您想要可读字符串,则此选项适用于我: import datetime mtime = path.stat().st_mtime timestamp_str = datetime.datetime.fromtimestamp(mtime).strftime('%Y-%m-%d-%H:%M') 明确

将从
stat()
调用检索到的修改时间转换为
datetime
对象的最惯用/有效的方法是什么?我想出了以下(蟒蛇3):

似乎有点奇怪,我不得不在这里硬编码Unix时代。有更直接的方法吗?

你可以使用,即


如果您想要可读字符串,则此选项适用于我:

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

明确地说,这是
datetime
类上的替代构造函数(
classmethod
),而不是
datetime
模块的函数。因此,如果在文件的顶部有
import datetime
,则需要
datetime.datetime.fromtimestamp(…)
。另外,如果OP使用的是
pathlib
,而不是
os.path
,则应该是
path().stat().st_mtime
;他们甚至从未导入过
os
,因此使用
os.path
中的
path.getmtime
,在OP的上下文中可能会有点混乱。我已对其进行了更正,以显示与导入datetime一起使用了两次的datetime。这将在Python中获取您的区域设置中的datetime对象。文件系统中保存的mtime应记录为UTC,单位为秒和纳秒。@ShadowRanger是对的,这个答案(包括链接)有点错误。这就是答案。
from datetime import datetime, timezone
...
stat_result = path.stat()
modified = datetime.fromtimestamp(stat_result.st_mtime, tz=timezone.utc)
print('modified', modified)
import datetime
mtime = path.stat().st_mtime
timestamp_str = datetime.datetime.fromtimestamp(mtime).strftime('%Y-%m-%d-%H:%M')