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')