Bagaimana cara mengonversi datetime ke tanggal (dengan Python)?


646

Bagaimana cara mengonversi datetime.datetimeobjek (misalnya, nilai pengembalian datetime.datetime.now())ke datetime.dateobjek dengan Python?


16
Jika Anda hanya memerlukan ini untuk datetime.datetime.now(), harap dicatat bahwa ada metode datetime.date.today().
Thierry J.

jika Anda sudah mengimpor datetime misalnya from datetime import datetimeAnda bisa menambahkan tanggalfrom datetime import datetime, date
Josh

Jawaban:


985

Gunakan date()metode:

datetime.datetime.now().date()

14
Untuk masuk ke UTC yang bisa sangat membantu -> datetime.datetime.utcnow()dan jugadatetime.datetime.utcnow().date()
Nick Brady

2
Terima kasih @SeanColombo, tanggal saat ini di zona waktu tertentu seharusnyadatetime.datetime.now(pytz.timezone('US/Pacific')).date()
Monica For CEO


62

Anda menggunakan datetime.datetime.date()metode ini:

datetime.datetime.now().date()

Jelas, ungkapan di atas dapat (dan harus IMHO :) ditulis sebagai:

datetime.date.today()

14
jangan membingungkan pria itu.
fiatjaf

1
Agar adil, jawaban ini (menggunakan .today()) adalah yang paling pythonic untuk contoh pertanyaan yang dinyatakan.
Dannid

2
Jika Anda menggunakan hari ini, berhati-hatilah saat membandingkan tanggal. today()memiliki komponen jam juga. jadi jika Anda melakukannya: losdat = datetime.datetime.strptime(losdatstr, '%d%m%Y')dan if losdat < datetime.datetime.today():itu akan selalu benar karena losdatakan memiliki komponen waktu tengah malam yang akan jatuh sebelum timestamptoday()
Dennis Decoene

3
@ DennisDecene: mengapa menggunakan datetime.datetime.today()alih-alih datetime.date.today(), ketika orang menginginkan datetime.dateobjek?
tzot

@tzot Ya itu juga yang ingin saya tunjukkan tetapi tidak jelas.
Dennis Decoene

45

Anda bisa mengonversi objek datetime ke tanggal dengan metode date () dari objek waktu tanggal, sebagai berikut:

<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
Apakah Anda bermaksud memposting jawaban ini di sini? Sepertinya saya jawaban Anda diarahkan ke pertanyaan yang berbeda.
Semua Pekerja Sangat Penting

2

Anda dapat memasukkan formulir kode ini untuk (tanggal hari ini & Nama-nama Hari & jam) : datetime.datetime.now().strftime('%y-%m-%d %a %H:%M:%S')

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

dan masukkan kode ini untuk ( hanya tanggal hari ini) : datetime.date.today().strftime('%y-%m-%d') '19 -09-10 '

untuk objek: 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 ingin mendapatkan datetime.dateobjek, dan bukan string, yang strftimeakan kembali (ref: docs.python.org/3/library/datetime.html#datetime.date.strftime ).
Grzegorz Skibinski
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.