Saya telah mencari banyak solusi di StackExchange tetapi tidak ada yang dapat memenuhi kebutuhan saya. Dalam JavaScript, saya menggunakan yang berikut ini untuk menghitung waktu UTC sejak 1 Januari 1970:
function UtcNow() {
var now = new Date();
var utc = Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds(), now.getUTCMilliseconds());
return utc;
}
Apa yang akan menjadi kode Python yang setara?
Jawaban:
Coba kode ini yang menggunakan datetime.utcnow () :
Untuk tujuan Anda ketika Anda perlu menghitung jumlah waktu yang dihabiskan antara dua tanggal, yang Anda butuhkan hanyalah mengurangi tanggal akhir dan mulai. Hasil substraksi tersebut adalah objek timedelta.
Dari dokumen python:
Dan ini berarti bahwa secara default Anda bisa mendapatkan bidang apa pun yang disebutkan dalam definisinya - hari, detik, mikrodetik, milidetik, menit, jam, minggu. Juga timedelta instance memiliki metode total_seconds () yang:
sumber
Dalam bentuk yang paling dekat dengan aslinya:
Jika Anda perlu mengetahui jumlah detik dari 1970-01-01 daripada Python asli
datetime
, gunakan ini sebagai gantinya:Python memiliki konvensi penamaan yang bertentangan dengan apa yang mungkin biasa Anda gunakan dalam Javascript, lihat PEP 8 . Selain itu, fungsi yang hanya mengembalikan hasil dari fungsi lain agak konyol; jika itu hanya masalah membuatnya lebih mudah diakses, Anda dapat membuat nama lain untuk suatu fungsi hanya dengan menetapkannya. Contoh pertama di atas bisa diganti dengan:
sumber
tzinfo
objek apa pun , bahkan untuk UTC.Sederhana, hanya perpustakaan standar, untuk python modern. Memberikan datetime sadar zona, tidak seperti
datetime.utcnow()
.datetimes
tanpa zona waktu adalah kecelakaan yang menunggu untuk terjadi.sumber
sumber
Dari datetime.datetime, Anda sudah dapat mengekspor ke cap waktu dengan metode strftime. Mengikuti contoh fungsi Anda:
Jika Anda menginginkan mikrodetik, Anda perlu mengubah string ekspor dan cast menjadi float seperti:
return float(now.strftime("%s.%f"))
sumber
time.time()
, Anda juga bisa menggunakan time.mktime (now.timetuple ()) untuk mengonversi langsung ke int. Bagaimanapun, untuk kasus sederhanatime.time()
ini juga merupakan opsi yang valid. Yang saya anggap aneh, adalah melalui timedelta untuk menemukan detik.strftime("%s")
tergantung platform dan tidak berfungsi di Windows. (Setidaknya itu tidak untuk saya di Windows 10).Sadar zona waktu tanpa ketergantungan eksternal:
sumber
Di Python 3 menggunakan ekspresi lambda, coba;
dan panggil fungsi tersebut secara normal;
sumber