将奇怪的日期格式转换为标准日期格式

时间:2012-11-08 15:51:36

标签: python mysql date format

在瑞典,我们有时使用奇怪的日期格式,例如新年是31/12。如果我将这种格式作为字符串,可以是1/1到31/12之间的任何日期,如果我们假设它是今年,我如何使用Python进入标准日期格式(格式为2012-01) -01和2012-12-31)可能会在mySQL数据库中存储为日期。

2 个答案:

答案 0 :(得分:2)

只需拆分这两个值,将它们映射到整数并更新datetime.date()实例:

import datetime
day, month = map(int, yourvalue.split('/'))
adate = datetime.date.today().replace(month=month, day=day)

使用datetime.date.today()我们得到当前年份。

演示:

>>> import datetime
>>> somevalue = '31/12'
>>> day, month = map(int, somevalue.split('/'))
>>> datetime.date.today().replace(month=month, day=day)
datetime.date(2012, 12, 31)
>>> someothervalue = '1/1'
>>> day, month = map(int, someothervalue.split('/'))
>>> datetime.date.today().replace(month=month, day=day)
datetime.date(2012, 1, 1)

或者,您可以使用datetime.strptime() method来解析这些日期,但是您必须手动更正之后的年份(如果没有解析年份,它将使用1900作为默认值):

adate = datetime.datetime.strptime(yourvalue, '%d/%m').date()
adate = adate.replace(year=datetime.date.today().year)

答案 1 :(得分:0)

这种格式没什么奇怪的:)

您可以使用datetime模块:

import datetime
d = datetime.datetime.strptime('31/12', '%d/%m').date().replace(year=2012)
print d

>> datetime.date(2012, 12, 31)