2016-10-25 10 views
1

strptimeを使用して日時をDateTimeフィールドに変換しようとしています。つまり、 "Friday 3:00 PM"のような入力をdatetimeフィールドに変換します。これは3日間連続して行われるイベントなので、金曜日は2月の特定の日になるとわかります。<day><time>からPythonとDjangoのDateTimeに変換して戻す

私の質問は、これをどうやって行うのですか?たとえば、金曜日の午後3時を2017-02-24 15:00:00に変換するにはどうすればよいですか?

私はviews.pyに、私のDjangoプロジェクトに今持っていることは次のとおりです。

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

その後、私はstrftimeのを使用して、後から日時フィールドから「金曜日午後3:00」をプリントアウトする必要があり、私はこれを逆にすると思いますか?

ありがとうございます!

+0

あなたはあなたの日「金曜日午後3:00」で年を持っていないあなたは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' 

あなたは次のように「金曜日午後3:00には、」変換することができます言及したように年と月が2017年2月に固定されている場合:

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を使用すると、読み取り可能なtime stringを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 
関連する問題