繁体   English   中英

如何在python中使用strftime()格式化'0000-00-00 00:00:00'?

[英]How to format '0000-00-00 00:00:00' using strftime() in python?

格式化日期为:

dob = datetime(0000, 00, 00)
dob = dob.strftime("%Y-%m-%d")

但它给出了错误: ValueError: year is out of range

我如何在 python 中使用strftime()格式化datetime(0000,00,00)

Python关于datetime模块文档,特别是datetime类指出datetime对象可以具有以下范围内的属性值:

 MINYEAR <= year <= MAXYEAR 1 <= month <= 12 1 <= day <= number of days in the given month and year 0 <= hour < 24 0 <= minute < 60 0 <= second < 60 0 <= microsecond < 1000000

该模块还定义了以下常量:

datetime.MINYEAR

日期或日期时间对象中允许的最小年份数。 MINYEAR1

datetime.MAXYEAR

日期或日期时间对象中允许的最大年份数。 MAXYEAR9999

这意味着您不能在datetime类的构造函数中使用那些 ( datetime(0000, 00, 00) ) 参数,因此ValueError表明给定的年份超出范围

由于您无法首先使用以下参数构造datetime对象,因此无法对其调用strftime方法。

您不能使用值为 0 的年/月/日。

dob = datetime(1989, 1, 1)
dob = dob.strftime("%Y-%m-%d")

'1989-01-01'

这是超出范围-无有0年在共同的时代,也不是在公历一个月零一天。 除此之外,如果 time_t 是 32 位,您可能无法处理 1902 年之前的年份( Unix time的属性)。

如果您真的想生成一个带有零的字符串作为格式示例,您可以生成一个带有一些功能日期(例如 99-09-09)的字符串,并用零替换数字。

一般来说,我更喜欢样本日期,您可以从中推断字段的值,但是,例如 1980-10-30。 这不会为混淆日和月留下空间。

日期、月份和年份不能为 0。如果您希望提供某种默认值,请考虑为其提供一个回溯值,例如 1970 年 1 月 1 日或任何其他年份在 1-9999 范围内、日期在 1-30 范围内的日期( 28,29,31(如适用)和 1-12 范围内的月份

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM