Python datetime - impostazione di ora e minuti fissi dopo l'utilizzo di strptime per ottenere giorno, mese, anno


174

Ho convertito con successo qualcosa di 26 Sep 2012formato in 26-09-2012usando:

datetime.strptime(request.POST['sample_date'],'%d %b %Y')

Tuttavia, non so come impostare l'ora e i minuti di qualcosa come sopra alle 11:59. Qualcuno sa come fare questo?

Nota, questa può essere una data futura o qualsiasi altra casuale, non solo la data corrente.

Risposte:


363

Utilizzare datetime.replace:

from datetime import datetime
date = datetime.strptime('26 Sep 2012', '%d %b %Y')
newdate = date.replace(hour=11, minute=59)

Grazie per la risposta rapida! :) Sei solo curioso di sapere se esiste un modo per farlo senza la variabile data aggiuntiva? (Sono un principiante di Python)
user1678031

2
Sì, basta date = datetime.strptime('26 Sep 2012', '%d %b %Y').replace(hour=11, minute=59). Ho usato la variabile extra in modo che la linea non fosse troppo lunga :)
nneonneo,

14
Vale anche la pena notare: datetime.replacerestituisce una nuova copia del datetime (poiché datetimeè immutabile): è come str.replacea questo proposito.
nneonneo,

Come posso rimuovere tutto dopo '01/06/2016' in modo che ore, minuti e secondi scompaiano?
PV8

46

datetime.replace () fornirà le migliori opzioni. Inoltre, offre la possibilità di sostituire giorno, anno e mese.

Supponiamo di avere un datetimeoggetto e la data sia rappresentata come: "2017-05-04"

>>> from datetime import datetime
>>> date = datetime.strptime('2017-05-04',"%Y-%m-%d")
>>> print(date)
2017-05-04 00:00:00
>>> date = date.replace(minute=59, hour=23, second=59, year=2018, month=6, day=1)
>>> print(date)
2018-06-01 23:59:59

8
Qual è il valore aggiunto della tua risposta rispetto alla risposta di nneonneo pubblicata 5 anni prima della tua?
Samuel Dauzon,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.