web-dev-qa-db-fra.com

Python a défini l'heure de l'heure de la date comme étant une heure spécifique

J'essaie d'obtenir la date d'hier à 23h30.

Voici mon code:

    import datetime
    yesterday = datetime.date.today () - datetime.timedelta (days=1) 
    PERIOD=yesterday.strftime ('%Y-%m-%d') 
    new_period=PERIOD.replace(hour=23, minute=30)
    print new_period

cependant, je reçois cette erreur:

TypeError: replace() takes no keyword arguments

toute aide serait appréciée.

18
jxn

Commencez par changer datetime.date.today() en datetime.datetime.today() pour pouvoir manipuler l’heure du jour.

Appelez ensuite replace avant de transformer l'heure en chaîne.

Donc au lieu de:

PERIOD=yesterday.strftime ('%Y-%m-%d') 
new_period=PERIOD.replace(hour=23, minute=30)

Faire ceci:

new_period=yesterday.replace(hour=23, minute=30).strftime('%Y-%m-%d')
print new_period

N'oubliez pas non plus que la chaîne vers laquelle vous la convertissez n'affiche aucune information sur l'heure ou la minute. Si cela vous intéresse, ajoutez %H pour heure et %M pour les informations de minute à votre chaîne de format.

33
huu

Vous pouvez utiliser datetime.combine (date, heure, tzinfo = self.tzinfo).

import datetime
yesterday = datetime.date.today () - datetime.timedelta (days=1)
t = datetime.time(hour=23, minute=30)
print(datetime.datetime.combine(yesterday, t))
3
Yuriy Arhipov

C'est ce que tu veux?

from datetime import datetime
yesterday = datetime(2014, 5, 12, 23, 30)
print yesterday

Edité

from datetime import datetime
import calendar

diff = 60 * 60 * 24

yesterday = datetime(*datetime.fromtimestamp(calendar.timegm(datetime.today().utctimetuple()) - diff).utctimetuple()[:3], hour=23, minute=30)

print yesterday
0
andmart