【问题标题】:Python Format Ctime MethodPython 格式化 Ctime 方法
【发布时间】:2018-03-24 23:24:44
【问题描述】:

我正在尝试使用os.path.getmtime() 获取文件的修改日期并将时间转换为人类可读的格式;建议使用time.ctime() 方法,但它也给出了日期和月份的名称,这是我不想要的。

是否可以格式化%d %m %Y, %H:%M

目前我的代码如下:

import os.path, time

path = #path of the file

print time.ctime(os.path.getmtime(path))

【问题讨论】:

  • 你的意思是time.strftime("%d %m %Y, %H:%M")
  • time.strftime("%d %m %Y, %H:%M",time.ctime(os.path.getatime(path+'\\'+file))) 给出错误?
  • 谁建议的?由于许可证问题,此人是否还建议您使用 Python 1.6 而不是 2.0?
  • @MertTheGreat 既然ctime 返回一个字符串(一个非语言环境感知的、固定格式的字符串),为什么除了错误之外会给出任何结果?
  • 不,如果您知道更好的方法,请与我分享这就是我问的原因,谢谢。

标签: python date time


【解决方案1】:

您可以使用datetime.fromtimestamp() 来做到这一点,例如:

代码:

file_time_string = dt.datetime.fromtimestamp(os.path.getmtime(__file__))

测试代码:

import os
import datetime as dt

file_time = dt.datetime.fromtimestamp(os.path.getmtime(__file__))
print(file_time.strftime("%d %m %Y, %H:%M"))

结果:

24 03 2018, 16:39

【讨论】:

  • 感谢您的及时回复和热心帮助。
【解决方案2】:

如文档所述,ctime 函数只调用具有固定格式的asctime。如果你想使用strftime风格的格式字符串,方法是调用strftime函数。

实际上有两种方法可以做到这一点。现代方式是构造一个datetime对象并调用它的方法:

>>> datetime.datetime.fromtimestamp(mtime).strftime("%d %m %Y, %H:%M")
'21 03 2018, 20:34'

如果你想坚持使用time 模块,你需要一个struct_tm 来传递给它的函数:

>>> time.strftime("%d %m %Y, %H:%M", time.localtime(mtime))
'21 03 2018, 20:34'

如果这是您对时间戳所做的唯一事情,则没有太大区别。但是,如果您希望能够对它们进行排序、对它们进行算术运算等,您可能会更喜欢datetime

【讨论】:

  • 感谢您的帮助。我只是想学习。似乎datetime 是这样做的方法
猜你喜欢
  • 2015-12-12
  • 1970-01-01
  • 2013-03-05
  • 2017-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多