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

时间:2016-05-30 08:41:53

标签: python datetime strftime

格式化日期为:

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

但它会出错:ValueError: year is out of range

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

4 个答案:

答案 0 :(得分:5)

Python的documentation on the datetime module,特别是-ProjectName file1.xml file2.xml project.jar 类声明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 MINYEAR

1
  

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

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

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

答案 1 :(得分:0)

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

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

&#39; 1989-01-01&#39;

答案 2 :(得分:0)

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

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

一般来说,我更喜欢样本日期,您可以根据它们的值来推断字段,例如1980-10-30。这不会给日和月的混乱留下空间。

答案 3 :(得分:0)

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