转换为十进制日和月时,日期的格式字符串无效

2024-09-28 05:40:12 发布

您现在位置:Python中文网/ 问答频道 /正文

特别是我在Windows上使用%-d%-m时遇到了问题。在

我得到的错误很简单

output_dict.update({"DOB1": f"{dob.strftime('%-m/%-d/%Y') if not dob is None else 'UniqueID' + str(row)}"})
ValueError: Invalid format string

我的格式字符串如下所示:

^{pr2}$

我相当肯定这是因为我是windows,但我想知道是否有一种独立于平台的方法来解决这个问题,还是我做了其他错误而导致了这个错误。在

我看到了一些关于%e在windows中用于月份的内容strftime,但是它用空格代替了0,但这是不可取的。我试图得到这些精确的输出(稍后我使用类似的格式字符串)1/1/2000和{}。在

我不希望使用{dob.year}ect之类的解决方案,因为我已经有了一个格式字符串。在

如果您有任何关于最佳实践的想法,以及如何实施解决方案,我将不胜感激。非常感谢。在


Tags: 字符串outputifiswindows格式错误not
1条回答
网友
1楼 · 发布于 2024-09-28 05:40:12

答案的一部分隐藏在SA注释中:Why does "%-d", or "%-e" remove the leading space or zero?

在Windows上,您应该使用#来避免零填充(在Unix系统上,它代替了-)。在

下面是一个小例子:

>>> from datetime import datetime
>>> datetime(2015, 3, 5).strftime('%d')
'05'
>>> datetime(2015, 3, 5).strftime('%-d')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: Invalid format string
>>> datetime(2015, 3, 5).strftime('%#d')
'5'

不幸的是,我没有跨平台的解决方案。在

相关问题 更多 >

    热门问题