Saya ingin memiliki datetime
string dari tanggal dengan milidetik. Kode ini khas untuk saya dan saya ingin belajar bagaimana mempersingkatnya.
from datetime import datetime
timeformatted= str(datetime.utcnow())
semiformatted= timeformatted.replace("-","")
almostformatted= semiformatted.replace(":","")
formatted=almostformatted.replace(".","")
withspacegoaway=formatted.replace(" ","")
formattedstripped=withspacegoaway.strip()
print formattedstripped
python
datetime
string-formatting
Jurudocs
sumber
sumber
Instant.parse
dapat mengurai representasi yang dibuat denganstrftime('%Y-%m-%dT%H:%M:%S.%fZ')
Jawaban:
Untuk mendapatkan string tanggal dengan milidetik (3 tempat desimal di belakang detik), gunakan ini:
Catatan: Untuk Python3,
print
membutuhkan tanda kurung:sumber
2013-08-23 10:18:32.926
adalah output dariprint datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]
.import datetime
sebagai gantinyafrom datetime import datetime
, Anda harus menggunakan ini:datetime.datetime.utcnow().strftime("%H:%M:%S.%f")
Dengan Python 3.6 Anda dapat menggunakan:
Keluaran:
Info lebih lanjut di sini: https://docs.python.org/3/library/datetime.html#datetime.datetime.isoformat
sumber
http://docs.python.org/library/datetime.html#strftime-strptime-behavior
sumber
[:-3]
ke akhir untuk menjatuhkan 3 digit terakhir sehingga hanya menampilkan milidetik.@Cabbi mengangkat masalah yang pada beberapa sistem, format microseconds
%f
mungkin berikan"0"
, jadi tidak portabel untuk hanya memotong tiga karakter terakhir.Kode berikut dengan hati-hati memformat cap waktu dengan milidetik:
Contoh Output:
Untuk mendapatkan hasil persis seperti yang diinginkan OP, kita harus menghapus karakter tanda baca:
Contoh Output:
sumber
Mungkin seperti ini:
sumber
%m
harus a%M
, karena itu menit, bukan bulan.Saya berasumsi Anda maksud Anda sedang mencari sesuatu yang lebih cepat daripada datetime.datetime.strftime (), dan pada dasarnya menghilangkan karakter non-alpha dari timestamp utc.
Pendekatan Anda sedikit lebih cepat, dan saya pikir Anda dapat mempercepat lebih banyak hal dengan mengiris string:
sumber
hasil
Penggunaan metode translate () dan slicing berjalan dalam waktu yang sama
translate () menyajikan keuntungan untuk dapat digunakan dalam satu baris
Membandingkan waktu berdasarkan yang pertama:
sumber
Saya berurusan dengan masalah yang sama tetapi dalam kasus saya adalah penting bahwa milidetik itu bulat dan tidak terpotong
sumber
sumber
sumber
sumber
Masalah dengan
datetime.utcnow()
dan solusi lainnya adalah lambat.Solusi yang lebih efisien mungkin terlihat seperti ini:
Dimana
prec
akan3
dalam kasus Anda (milidetik).Fungsi ini berfungsi hingga 9 tempat desimal (harap perhatikan nomor
9
dalam string pemformatan ke-2).Jika Anda ingin membulatkan bagian pecahan, saya sarankan membangun
"%.9f"
secara dinamis dengan jumlah tempat desimal yang diinginkan.sumber