我有一个继承的wxPython应用程序。在我看来,它需要一定程度的整理,因为日期可以以略微不同的格式出现。下面显示了一段示例代码(我添加了' print'语句: -
formattedDate = str(Date.tm_year) + '-' + str(Date.tm_mon) + '-' + str(Date.tm_mday)
print 'formattedDate is >', formattedDate, '<'
today = time.strftime('%Y-%m-%d')
print 'Today is >', today, '<'
,其输出为: -
formattedDate is > 2015-8-14 <
Today is > 2015-08-14 <
formattedDate基于用户输入,是患者的DateOfBirth(添加到数据库中)。令我困惑的是,为什么月份是一个案例中的一位数,另一个是两位数。我已经浏览了我的Python书籍并在网上搜索过但无法找到答案。
答案 0 :(得分:0)
嗨Date
的类型为time.struct_time
。这是因为Date.tm_mon
返回月份的整数表示(类型为int
),当您手动将其转换为str
时,您将获得它具有的位数。
示例 -
>>> t = time.strptime('2015-8-10','%Y-%m-%d')
>>> t
time.struct_time(tm_year=2015, tm_mon=8, tm_mday=10, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=222, tm_isdst=-1)
>>> t.tm_mon
8
>>> type(t.tm_mon)
<class 'int'>
>>> str(t.tm_mon)
'8'
当您使用格式为strftime()
的{{1}}时,python会将月份正确格式化为2位数,格式为documented -
%m - 月份为十进制数[01,12]。
示例 -
%m
我总是建议您使用>>> time.strftime('%m')
'08'
将日期格式化为字符串,而不是手动创建它们。要使用strftime()
格式化time.struct_time
对象,请将strftime()
对象作为第二个参数传递给time.struct_time
,示例 -
strtime()
答案 1 :(得分:0)
一切正常,根据文件:
print time.strftime显示2位数
%m月份为十进制数[01,12]。
和Date.tm_mon - 看起来像是自定义类/字段,它显示一位数值。检查什么是Date.tm_mon以及它如何存储值,也许它会截断零
答案 2 :(得分:0)
Date.tm_mon可能是一个整数,str(8)会打印一个数字(没有前导零)。
另一方面,time.strftime('%Y-%m-%d')中的%m总是输出2个数字的月份(documentation)。