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.