2015-06-19 45 views
1

我创建一个Django应用程序,我有一个问题:我有一个日期(例如“2001年6月3日”),我不能说字符串转换为日期,因为它不存在于格式指令蟒蛇指一天没有“0”如何从django(python)的日期中删除'0'?

我怎么能caonvert,为“2001年6月3日”?

谢谢!

回答

1

您可以通过安装pip install python-dateutil

使用dateutil然后

>>>from dateutil import parser 
>>>mydate = "June 3, 2001" 
>>>str(parser.parse(mydate).date()) 
'2001-06-03' 
+0

谢谢!这是我需要的! – jartymcfly

1

您可以使用datetime.strptime,如果你正在使用python -

from datetime import datetime 
d = datetime.datetime.strptime("June 3 , 2001" , "%B %d , %Y") 
d 
>> datetime.datetime(2001, 6, 3, 0, 0) 

请理解%B(通知资本B) - >为完整的月份名称(如一月/ 2月/ 6月)

如果你会使用3名字母的缩写,而不是(像一月/二月/ 6月),使用%b

为了取回你问使用datetime.strftime,像下面的格式的日期 -

d.strftime("%Y-%m-%d") 
>> '2001-06-03' 

如果你必须使用这两种格式月份名称,你可以先尝试使用一种格式,并赶上了例外,如果失败使用其他格式。示例 -

from datetime import datetime 
try: 
    d = datetime.datetime.strptime("June 3 , 2001" , "%B %d , %Y") 
expect ValueError: 
    d = datetime.datetime.strptime("June 3 , 2001" , "%b %d , %Y") 
d 
>> datetime.datetime(2001, 6, 3, 0, 0) 
+0

问题是,%d不是一天正确的,因为这一天 “3” 还没有“0 '(我的意思是,它不是“03”);所以我有一个错误。 “实时数据 '2010年6月6' 不匹配格式 '%B%d,%Y'” – jartymcfly

+0

就像我在帖子中说(请仔细阅读),使用'%B',不'%B'(资本B),问题不在'%d'中。 –

+0

'0'不是问题,只要在控制台中尝试一下,就会看到。 – Gocht