【问题标题】:Python Invalid format string [duplicate]Python无效的格式字符串[重复]
【发布时间】:2014-10-01 11:38:31
【问题描述】:

我正在尝试使用 strftime 以以下格式打印日期: 06-03-2007 05:40PM

我写了以下代码:

import time
print time.strftime("%m-%d-%Y %T:%M%p")

但它给出了一个错误“无效的格式字符串”。这是为什么呢?

【问题讨论】:

  • 为我工作,它返回 10-01-2014 13:38:59:38PM
  • 一个小问题,你想要的格式06-03-2007 05:40PM和你使用的格式字符串不一样。你应该使用"%m-%d-%Y %H:%I%p"

标签: python python-2.7 datetime


【解决方案1】:

也许您正在寻找hourH 而不是T。检查strftime可能的选项

print time.strftime("%m-%d-%Y %H:%M%p")

注意: Windows 和 Linux 机器上的行为不同。如果您看到 Windows 平台都支持什么,请查看http://msdn.microsoft.com/en-us/library/fe06s4ak.aspx

所以在 Windows 上使用%H:%M:%S 比使用%T 更好。

【讨论】:

  • 是的,这有效!谢谢!我猜 Windows 上的 %T 有问题
  • 是的。对于 Windows 中所有支持的格式选项,请查看我在答案中添加的链接。
  • 对 Windows 和 Linux 之间差异的出色调用。 Windows 不支持“%-d”(月份中的某天,无填充),实际上根本没有选项(最接近的是“%e”(月份中的某天,空格填充)。这让我发疯了我正在对两者进行测试,但无法弄清楚为什么其中一个无效。谢谢!
【解决方案2】:

%T 在:

print time.strftime("%m-%d-%Y %T:%M%p")

不存在。您应该使用 %H (0-23) 或 %I (0-11)

【讨论】:

  • 确实如此:>>> time.strftime("%m-%d-%Y %T:%M%p") '10-01-2014 14:34:40:34PM'
  • 我认为这是Linux和Windows之间的区别。检查这个post
  • @Burhan 您使用的是哪个操作系统?
  • 我猜 Windows 上的 %T 有问题。 %H 成功了!
猜你喜欢
  • 2015-01-07
  • 2020-11-21
  • 1970-01-01
  • 1970-01-01
  • 2015-07-23
  • 2021-11-12
  • 2019-07-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多