2016-10-25 1 views
1

En essayant d'utiliser strptime pour convertir un jour et l'heure dans un champ DateTime. C'est-à-dire, convertir l'entrée comme "vendredi 15:00" en un champ datetime. L'événement est pour trois jours consécutifs, donc je sais que le vendredi sera un jour spécifique en février, et ainsi de suite.Conversion de <day><time> à DateTime en python et Django, et retour

Ma question est comment dois-je prendre? Comment puis-je convertir, par exemple, vendredi 15h00 en 2017-02-24 15:00:00?

Ce que j'ai en ce moment dans mon projet Django, en views.py est:

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

Ensuite, je dois imprimer « vendredi 15h00 » du champ datetime plus tard, en utilisant strftime, ce que je suppose est l'inverse de ce qui précède?

Merci!

+0

Vous n'avez pas l'année à date « vendredi 15h00 », vous avez besoin si vous voulez le convertir en quelque chose comme « 24/02/2017 15:00:00" – ettanany

+0

Je sais ce que l'année sera bien – PSU2017

+0

années moyens est fixé à 2017? – ettanany

Répondre

0

Vous pouvez adapter l'exemple ci-dessous pour obtenir ce que vous voulez exactement:

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' 

Si l'année et le mois sont fixés à 2017 et Février comme vous l'avez mentionné, puis « vendredi 15h00 » peut être converti comme suit :

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' 

Si vous souhaitez obtenir datetime objet utiliser les éléments suivants:

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

Cela devrait le faire! Merci beaucoup! – PSU2017

+0

Vous venez d'éditer ma réponse pour inclure un exemple de création d'un objet 'datetime' à partir d'une chaîne. – ettanany

0

Vous pouvez utiliser python-dateutil pour analyser la chaîne de temps lisible pour objet datetime. C'est très pratique et facile à utiliser.

Exemples de sa page du document:

>>> 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