Dalam komputasi, epoch time adalah tanggal dan waktu dari mana komputer mengukur waktu sistem. Ini adalah titik awal atau momen tetap dalam waktu yang digunakan untuk menghitung jumlah detik yang telah berlalu. Tanggal waktu komputer ditentukan menurut jumlah detik yang berlalu sejak waktu Epoch
Waktu Epoch juga dikenal sebagai waktu POSIX atau waktu UNIX. Misalnya, di sebagian besar versi UNIX, waktu epoch dimulai dari 00. 00. 00 UTC pada 1 Januari 1970
Jadi ketika kita mengonversi datetime menjadi detik kita akan mendapatkan jumlah detik sejak zaman. Ini berarti detik yang berlalu antara input datetime dan epoch time [00. 00. 00 UTC pada 1 Januari 1970]
Bagaimana mengkonversi datetime ke Detik dengan Python
Misalkan Anda memiliki datetime [2018,10,22] dalam format UTC dan Anda ingin menghitung jumlah detik sejak zaman. Langkah-langkah di bawah ini menunjukkan dua cara untuk mengonversi datetime menjadi detik
- Impor modul datetime
Modul datetime Python menyediakan berbagai fungsi untuk membuat dan memanipulasi tanggal dan waktu. Gunakan pernyataan
Datetime to Seconds since epoch: 1540166400.0
0 untuk mengimpor kelasDatetime to Seconds since epoch: 1540166400.0
1 dari modul datetime - Kurangi input datetime dari waktu Epoch
Untuk mengonversi datetime menjadi detik, kurangi input datetime dari waktu Epoch. Untuk Python, waktu epoch dimulai dari 00. 00. 00 UTC pada 1 Januari 1970. Pengurangan memberi Anda objek timedelta. Gunakan metode
Datetime to Seconds since epoch: 1540166400.0
_2 dari objek timedelta untuk mendapatkan jumlah detik sejak Zaman - Gunakan metode timestamp[]
Jika versi Python Anda lebih besar dari 3. 3 lalu cara lain adalah dengan menggunakan metode
Datetime to Seconds since epoch: 1540166400.0
3 dari kelas datetime untuk mengonversi datetime menjadi detik. Metode ini mengembalikan nilai float yang mewakili sepersekian detik
Contoh. Datetime ke Detik
from datetime import datetime
# input datetime
dt = datetime[2018, 10, 22, 0, 0]
# epoch time
epoch_time = datetime[1970, 1, 1]
# subtract Datetime from epoch datetime
delta = [dt - epoch_time]
print['Datetime to Seconds since epoch:', delta.total_seconds[]]
_Keluaran
Datetime to Seconds since epoch: 1540166400.0
Datetime ke detik menggunakan timestamp[]
Stempel waktu adalah informasi yang disandikan yang umumnya digunakan di UNIX, yang menunjukkan tanggal dan waktu terjadinya peristiwa tertentu. Informasi ini bisa akurat hingga mikrodetik. Ini adalah stempel waktu POSIX yang sesuai dengan instance datetime
Kode di bawah ini menunjukkan cara mengonversi datetime menjadi detik menggunakan metode
Datetime to Seconds since epoch: 1540166400.03. Metode ini hanya akan berguna jika Anda memerlukan jumlah detik dari zaman [1970-01-01 UTC]. Ini mengembalikan sejumlah detik yang telah berlalu sejak zaman sebagai nilai float yang mewakili sepersekian detik
Contoh
from datetime import datetime
# input datetime
dt = datetime[2018, 10, 22, 0, 0]
print['Seconds since epoch:', dt.timestamp[]]
Keluaran
Seconds since epoch: 1540146600.0_
Catatan
Perhatikan bahwa zona waktu yang berbeda berdampak pada hasil. Oleh karena itu seseorang harus mempertimbangkan untuk mengonversi datetime ke UTC sebelum mengubahnya menjadi detik
Untuk mendapatkan hasil yang akurat, Anda harus menggunakan waktu waktu UTC. Jika datetime Anda belum dalam UTC, Anda harus mengonversinya sebelum menggunakannya atau melampirkan kelas tzinfo dengan offset zona waktu yang tepat. Tambahkan
Datetime to Seconds since epoch: 1540166400.05 jika menggunakan Python 2 atau
Datetime to Seconds since epoch: 1540166400.06 jika menggunakan Python 3
Jangan gunakan strptime untuk mengonversi datetime menjadi detik menggunakan atribut
Datetime to Seconds since epoch: 1540166400.07 karena Python tidak mendukung atribut
Datetime to Seconds since epoch: 1540166400.07. Jika Anda menggunakannya, Python akan menggunakan strftime sistem Anda, yang menggunakan zona waktu lokal Anda, dan Anda akan mendapatkan hasil yang tidak akurat. Lihat
Datetime ke detik menggunakan modul kalender
Modul kalender menyediakan metode yang mengembalikan nilai stempel waktu Unix yang sesuai, dengan asumsi zaman 1970 dan pengkodean POSIX
- impor modul clenadar
- Gunakan
Datetime to Seconds since epoch: 1540166400.0
_9 untuk mendapatkan tuple waktu dari datetime - Selanjutnya, berikan time tuple ke metode
0 untuk mengonversi datetime menjadi detikfrom datetime import datetime # input datetime dt = datetime[2018, 10, 22, 0, 0] print['Seconds since epoch:', dt.timestamp[]]
Contoh
import calendar
from datetime import datetime
# input datetime
dt = datetime[2018, 10, 22, 0, 0]
print['Datetime to seconds:', calendar.timegm[dt.timetuple[]]]
Keluaran
Datetime to seconds: 1540166400
Catatan
- Metode ini menghapus sepersekian detik
- Pendekatan kalender tidak memiliki cara untuk menentukan zona waktu. Jika input datetime mengetahui instance dan menggunakan zona waktu yang berbeda dari zona waktu sistem, hasilnya tidak akan benar [zona waktu hilang dalam panggilan
1]. Untuk mendapatkan jawaban yang benar untuk datetime 'sadar', Anda dapat menggunakanfrom datetime import datetime # input datetime dt = datetime[2018, 10, 22, 0, 0] print['Seconds since epoch:', dt.timestamp[]]
2from datetime import datetime # input datetime dt = datetime[2018, 10, 22, 0, 0] print['Seconds since epoch:', dt.timestamp[]]
Detik/Epoch ke Datetime
Jika Anda ingin mengonversi jumlah detik sejak zaman menjadi objek datetime, gunakan metode
from datetime import datetime
# input datetime
dt = datetime[2018, 10, 22, 0, 0]
print['Seconds since epoch:', dt.timestamp[]]
3 dari kelas datetimeContoh
from datetime import datetime
# seconds
ts = 1540146600.0
# convert seconds to datetime
dt = datetime.fromtimestamp[ts]
print["datetime is:", dt]
Keluaran
datetime is: 2018-10-22 00:00:00
Mengonversi waktu Epoch dengan milidetik menjadi waktu tanggal
Jika Anda ingin mengonversi milidetik menjadi objek datetime, gunakan metode strptime[] dari kelas datetime. Gunakan kode format
from datetime import datetime
# input datetime
dt = datetime[2018, 10, 22, 0, 0]
print['Seconds since epoch:', dt.timestamp[]]
_4 untuk parsing