Mengkonversi datetime objek String date hanya di Python

Saya melihat banyak di mengkonversi tanggal string ke sebuah datetime objek di Python, tapi aku ingin pergi dengan cara lain. I've punya

datetime.datetime(2012, 2, 23, 0, 0)

dan saya ingin mengubahnya ke string seperti'2/23/2012'.

Larutan

Anda dapat menggunakan strftime untuk membantu anda format tanggal.

E. g.,

import datetime
t = datetime.datetime(2012, 2, 23, 0, 0)
t.strftime('%m/%d/%Y')

akan menghasilkan:

'02/23/2012'

Informasi lebih lanjut tentang format lihat di sini

Komentar (3)

date dan datetime benda-benda (dan waktu juga) mendukung mini-bahasa untuk menentukan output, dan ada dua cara untuk mengaksesnya:

  • metode langsung call: dt.strftime('format berikut'); dan
  • format baru metode: '{:format di sini}'.format(dt)

Jadi contoh anda bisa terlihat seperti:

dt.strftime('%m/%d/%Y')

atau

'{:%m/%d/%Y}'.format(dt)

Untuk kelengkapan' demi: anda juga dapat langsung mengakses atribut dari objek, tapi kemudian anda hanya akan mendapatkan angka-angka:

'%s/%s/%s' % (dt.month, dt.day, dt.year)

Waktu yang dibutuhkan untuk belajar mini-bahasa yang layak.


Untuk referensi, berikut ini adalah kode-kode yang digunakan di mini-bahasa:

  • %a Hari kerja sebagai lokal disingkat nama.
  • %A Hari kerja sebagai lokal nama lengkap.
  • %w Hari kerja sebagai angka desimal, di mana 0 adalah hari minggu dan 6 adalah hari sabtu.
  • %d Hari bulan sebagai zero-padded angka desimal.
  • %b Bulan sebagai lokal disingkat nama.
  • %B Bulan sebagai lokal nama lengkap.
  • %m Bulan sebagai zero-padded angka desimal. 01, ..., 12
  • %y Tahun tanpa century sebagai zero-padded angka desimal. 00, ..., 99
  • %Y Tahun dengan century sebagai angka desimal. Tahun 1970, tahun 1988, 2001, 2013
  • %H Jam (24 jam) sebagai zero-padded angka desimal. 00, ..., 23
  • %I Jam (12 jam) sebagai zero-padded angka desimal. 01, ..., 12
  • %p Lokal setara baik AM atau PM.
  • %M Menit sebagai zero-padded angka desimal. 00, ..., 59
  • %S Kedua sebagai zero-padded angka desimal. 00, ..., 59
  • %f Mikrodetik sebagai angka desimal, nol-empuk di sebelah kiri. 000000, ..., 999999
  • %z UTC offset dalam bentuk +HHMM atau -HHMM (kosong jika naif), +0000, -0400, +1030
  • %Z nama zona Waktu (kosong jika naif), UTC, EST, CST
  • %j tahun nol-jaket angka desimal. 001, ..., 366
  • %U jumlah Minggu dalam setahun (minggu pertama) sebagai nol empuk angka desimal.
  • %W jumlah Minggu dalam setahun (jumat pertama) sebagai angka desimal.
  • %c Lokal sesuai tanggal dan waktu representasi.
  • %x Lokal sesuai tanggal representasi.
  • %X Lokal ini waktu yang tepat representasi.
  • %% Literal '%' karakter.
Komentar (2)

Pilihan lain:

import datetime
now=datetime.datetime.now()
now.isoformat()
# ouptut --> '2016-03-09T08:18:20.860968'
Komentar (2)

Anda bisa menggunakan string sederhana format metode:

>>> dt = datetime.datetime(2012, 2, 23, 0, 0)
>>> '{0.month}/{0.day}/{0.year}'.format(dt)
'2/23/2012'
>>> '%s/%s/%s' % (dt.month, dt.day, dt.year)
'2/23/2012'
Komentar (1)

jenis-format tertentu dapat juga digunakan:

t = datetime.datetime(2012, 2, 23, 0, 0)
"{:%m/%d/%Y}".format(t)

Output:

'02/23/2012'
Komentar (0)

Hal ini dimungkinkan untuk mengkonversi datetime objek menjadi string dengan bekerja secara langsung dengan komponen datetime objek.

from datetime import date  

myDate = date.today()    
#print(myDate) would output 2017-05-23 because that is today
#reassign the myDate variable to myDate = myDate.month 
#then you could print(myDate.month) and you would get 5 as an integer
dateStr = str(myDate.month)+ "/" + str(myDate.day) + "/" + str(myDate.year)    
# myDate.month is equal to 5 as an integer, i use str() to change it to a 
# string I add(+)the "/" so now I have "5/" then myDate.day is 23 as
# an integer i change it to a string with str() and it is added to the "5/"   
# to get "5/23" and then I add another "/" now we have "5/23/" next is the 
# year which is 2017 as an integer, I use the function str() to change it to 
# a string and add it to the rest of the string.  Now we have "5/23/2017" as 
# a string. The final line prints the string.

print(dateStr)  

Output --> 5/23/2017

Komentar (0)

Anda dapat mengkonversi datetime untuk string.

published_at = "{}".format(self.published_at)
Komentar (0)

Rangkaian String, str.bergabung, dapat digunakan untuk membangun string.

d = datetime.now()
'/'.join(str(x) for x in (d.month, d.day, d.year))
'3/7/2016'
Komentar (0)

Jika anda mencari cara sederhana dari datetime untuk konversi string dan dapat menghilangkan format. Anda dapat mengkonversi datetime objek str dan kemudian menggunakan array mengiris.

In [1]: from datetime import datetime

In [2]: now = datetime.now()

In [3]: str(now)
Out[3]: '2019-04-26 18:03:50.941332'

In [5]: str(now)[:10]
Out[5]: '2019-04-26'

In [6]: str(now)[:19]
Out[6]: '2019-04-26 18:03:50'

Tetapi perhatikan hal berikut. Jika solusi lain akan naik sebuah AttributeError ketika variabel adalah Tidak dalam hal ini anda akan menerima 'Ada' string.

In [9]: str(None)[:19]
Out[9]: 'None'
Komentar (0)

Jika anda ingin waktu yang baik, hanya pergi dengan

datetime.datetime.now().__str__()

Cetakan 2019-07-11 19:36:31.118766 di konsol untuk saya

Komentar (0)