2016-10-25 17 views
1

我試圖使用strptime將日期和時間轉換爲DateTime字段。也就是說,將輸入「星期五下午3:00」轉換爲日期時間字段。這個活動連續三天發生,所以我知道星期五將是二月的特定日子,以此類推。從<day><time>轉換爲Python和Django中的DateTime,並返回

我的問題是,我該如何去做這件事?如何將星期五下午3:00轉換爲2017-02-24 15:00:00?

我現在所擁有的在我的Django項目,在views.py是:

new_request.start = time.strptime(form.cleaned_data['start'], '%A %I:%M %p') 

然後,我要在以後從時間字段打印出「星期五3:00 PM」,使用的strftime,我認爲這是與上述相反的嗎?

謝謝!

+0

您不必每年在你的日期「星期五3:00 PM」,你需要它,如果你想將其轉換爲類似「2017年2月24日15:00:00「 – ettanany

+0

我知道今年會怎麼樣 – PSU2017

+0

平均年固定在2017年? – ettanany

回答

0

您可以調整下面的例子來實現你想要的究竟:

import time 

time.strftime("%Y-%d-%m %H:%M:%S", time.strptime('Friday 3 February 2017 3:00PM', '%A %d %B %Y %I:%M%p')) 
# Output: '2017-03-02 15:00:00' 

如果年和月固定年至2017年,二月像你提到的那麼「星期五3:00 PM」可以按以下方式轉換:

time.strftime("2017-%d-2 %H:%M:%S", time.strptime('Friday 3 3:00PM', '%A %d %I:%M%p')) 
# Output: '2017-03-2 15:00:00' 

如果你想獲得datetime對象使用以下方法:

from datetime import datetime 

datetime.strptime('Friday 3 February 2017 3:00PM', '%A %d %B %Y %I:%M%p') 
# Output: datetime.datetime(2017, 2, 3, 15, 0) 
+0

這應該做到這一點!非常感謝! – PSU2017

+0

剛編輯我的答案,包括一個從字符串創建'datetime'對象的例子。 – ettanany

0

您可以使用python-dateutil將可讀時間字符串解析爲datetime對象。它非常方便,易於使用。從它的文檔頁面

例子:

>>> from dateutil.relativedelta import * 
>>> from dateutil.easter import * 
>>> from dateutil.rrule import * 
>>> from dateutil.parser import * 
>>> from datetime import * 
>>> now = parse("Sat Oct 11 17:13:46 UTC 2003") 
>>> today = now.date() 
>>> year = rrule(YEARLY,dtstart=now,bymonth=8,bymonthday=13,byweekday=FR)[0].year 
>>> rdelta = relativedelta(easter(year), today) 
>>> print("Today is: %s" % today) 
Today is: 2003-10-11 
>>> print("Year with next Aug 13th on a Friday is: %s" % year) 
Year with next Aug 13th on a Friday is: 2004 
>>> print("How far is the Easter of that year: %s" % rdelta) 
How far is the Easter of that year: relativedelta(months=+6) 
>>> print("And the Easter of that year is: %s" % (today+rdelta)) 
And the Easter of that year is: 2004-04-11 
相關問題