gpt4 book ai didi

python - 在 Python 中为 1900 年之前的日期格式化日期字符串?

转载 作者:太空宇宙 更新时间:2023-11-03 13:24:49 24 4
gpt4 key购买 nike

谁能解释在日期值早于 1900 年的 Python 中格式化日期时间字符串的最佳方法? strftime 需要晚于 1900 年的日期。

最佳答案

这有点麻烦,但它有效(至少在稳定版本的 python 中):

>>> ts = datetime.datetime(1895, 10, 6, 16, 4, 5)
>>> '{0.year}-{0.month:{1}}-{0.day:{1}} {0.hour:{1}}:{0.minute:{1}}'.format(ts, '02')
'1895-10-06 16:04'

请注意 str 仍会生成可读的字符串:

>>> str(ts)
'1895-10-06 16:04:05'

编辑
模拟默认行为的最接近可能的方法是对字典进行硬编码,例如:

>>> d = {'%Y': '{0.year}', '%m': '{0.month:02}'}    # need to include all the formats
>>> '{%Y}-{%m}'.format(**d).format(ts)
'1895-10'

您需要使用简单的正则表达式将所有格式说明符括在花括号中:

>>> re.sub('(%\w)', r'{\1}', '%Y-%m-%d %H sdf')
'{%Y}-{%m}-{%d} {%H} sdf'

最后我们来简单的代码:

def ancient_fmt(ts, fmt):
fmt = fmt.replace('%%', '%')
fmt = re.sub('(%\w)', r'{\1}', fmt)
return fmt.format(**d).format(ts)

def main(ts, format):
if ts.year < 1900:
return ancient_format(ts, fmt)
else:
return ts.strftime(fmt)

其中 d 是一个全局字典,其键对应于 strftime table 中的一些说明符.

编辑2
澄清一下:此方法仅适用于以下说明符:%Y、%m、%d、%H、%M、%S、%f,即那些数字,如果您需要文本信息,你最好使用 babel 或任何其他解决方案。

关于python - 在 Python 中为 1900 年之前的日期格式化日期字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1526170/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com