Come faccio a convertire datetime ad oggi (in Python)?


646

Come faccio a convertire un datetime.datetimeoggetto (ad es. Il valore restituito datetime.datetime.now())in un datetime.dateoggetto in Python?


16
Se hai solo bisogno di questo datetime.datetime.now(), ti preghiamo di notare che esiste un metodo datetime.date.today().
Thierry J.,

se hai già importato datetime ad es. from datetime import datetimepuoi semplicemente aggiungere la datafrom datetime import datetime, date
Josh,

Risposte:


985

Usa il date()metodo:

datetime.datetime.now().date()

14
Per entrare in UTC che può essere molto utile -> datetime.datetime.utcnow()e di conseguenzadatetime.datetime.utcnow().date()
Nick Brady

2
Grazie @SeanColombo, la data corrente in un determinato fuso orario dovrebbe esseredatetime.datetime.now(pytz.timezone('US/Pacific')).date()
Monica For CEO,


62

Si utilizza il datetime.datetime.date()metodo:

datetime.datetime.now().date()

Ovviamente, l'espressione sopra può (e dovrebbe IMHO :) essere scritta come:

datetime.date.today()

14
non confondere il ragazzo.
fiatjaf,

1
per essere onesti, questa risposta (usando .today()) è la più pitonica per la domanda di esempio dichiarata.
Dannid,

2
Se lo usi oggi, fai attenzione quando confronti una data. today()ha anche un componente orario . quindi se lo fai: losdat = datetime.datetime.strptime(losdatstr, '%d%m%Y')e poi if losdat < datetime.datetime.today():sarà sempre vero perché losdatavrà una componente temporale di mezzanotte che cadrà prima del timestamp ditoday()
Dennis Decoene

3
@DennisDecoene: perché usare datetime.datetime.today()invece di datetime.date.today(), quando si vuole un datetime.dateoggetto?
martedì

@tzot Sì, era anche quello che volevo sottolineare, ma non era chiaro.
Dennis Decoene,

45

È possibile convertire un oggetto datetime in una data con il metodo date () dell'oggetto data e ora, come segue:

<datetime_object>.date()

3
import time
import datetime

# use mktime to step by one day
# end - the last day, numdays - count of days to step back
def gen_dates_list(end, numdays):
  start = end - datetime.timedelta(days=numdays+1)
  end   = int(time.mktime(end.timetuple()))
  start = int(time.mktime(start.timetuple()))
  # 86400 s = 1 day
  return xrange(start, end, 86400)

# if you need reverse the list of dates
for dt in reversed(gen_dates_list(datetime.datetime.today(), 100)):
    print datetime.datetime.fromtimestamp(dt).date()

2
Intendevi pubblicare questa risposta qui? Mi sembra che la tua risposta sia diretta verso una domanda diversa.
Tutti i lavoratori sono essenziali

2

puoi inserire questo modulo di codice per (oggi data e nomi del giorno e ora) : datetime.datetime.now().strftime('%y-%m-%d %a %H:%M:%S')

'19 -09-09 lun 17:37:56 '

e inserisci questo codice per ( data odierna semplicemente) : datetime.date.today().strftime('%y-%m-%d') '19 -09-10 '

per oggetto: datetime.datetime.now().date() datetime.datetime.today().date() datetime.datetime.utcnow().date() datetime.datetime.today().time() datetime.datetime.utcnow().date() datetime.datetime.utcnow().time()


OP voleva ottenere l' datetime.dateoggetto, e non la stringa, che strftimeavrebbe restituito (rif: docs.python.org/3/library/datetime.html#datetime.date.strftime ).
Grzegorz Skibinski,
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.