【问题标题】:Python time formatting different in WindowsWindows中的Python时间格式不同
【发布时间】:2012-06-04 03:35:44
【问题描述】:

我可能遗漏了我应该适应的明显平台差异,但在尝试执行时间格式 (Python2.7) 时我得到了这个...

在 Linux 环境中:

>>> import time
>>> time.strftime("%a, %d-%b-%Y %T GMT", time.gmtime())
'Tue, 29-May-2012 21:42:04 GMT'

在 Windows 中:

>>> import time
>>> time.strftime("%a, %d-%b-%Y %T GMT", time.gmtime())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: Invalid format string

从 time.gmtime() 返回的元组看起来是相同的,所以我不完全确定我需要更改什么。

【问题讨论】:

  • 只是为了确保您在两个平台上使用的 Python 版本完全相同?

标签: python cross-platform


【解决方案1】:

通常,您会发现 python time.strftime() 支持与其运行的平台(或者更具体的平台的 libc)相同的格式说明符集。但是,其中只有一部分是可移植的。有关列表,请参阅http://docs.python.org/library/time.html。引用文档:

某些平台可能支持其他指令,但仅限 此处列出的含义由 ANSI C 标准化。

在这种情况下,%T 可以替换为 %H:%M:%S

【讨论】:

  • 这里是 Windows strftime 支持的格式字符列表:msdn.microsoft.com/en-us/library/fe06s4ak.aspx
  • 一个小问题:Linux/Posix/Unix strftime 似乎默默地忽略 [一些] 无效格式,这会导致 Windows 致命异常。
【解决方案2】:

我没有看到 Python documentation 中列出的 %T 格式指令 - 一定不能在 Windows 平台上使用/实现(我刚刚尝试使用 Python v2.7.3 和 3.2.3)

【讨论】:

    【解决方案3】:

    我发现我遇到了这个问题,因为 MacOS 支持"%D",我不得不用"%m/%d/%Y" 替换它以使其跨平台。一般来说,组合像%m这样的“简单”格式字符串似乎比使用像%T%D这样的“聚合”字符串更安全。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多