Apakah waktu.waktu()
dalam Python modul waktu kembali sistem's waktu atau waktu dalam UTC?
The waktu.waktu()
fungsi mengembalikan jumlah detik sejak epoch, karena detik. Perhatikan bahwa "epoch" didefinisikan sebagai mulai dari 1 januari 1970 di UTC. Jadi zaman didefinisikan dalam hal UTC dan menetapkan global saat dalam waktu. Tidak peduli di mana anda berada "detik zaman masa lalu" (waktu.time()) mengembalikan nilai yang sama pada saat yang sama.
Berikut ini adalah beberapa contoh keluaran aku berlari di komputer saya, konversi ke string juga.
Python 2.7.3 (default, Apr 24 2012, 00:00:54)
[GCC 4.7.0 20120414 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import time
>>> ts = time.time()
>>> print ts
1355563265.81
>>> import datetime
>>> st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
>>> print st
2012-12-15 01:21:05
>>>
The ts
variabel adalah waktu kembali dalam hitungan detik. Saya kemudian dikonversi ke string menggunakan datetime
perpustakaan sehingga string yang dapat dibaca manusia.
Ini adalah untuk teks bentuk timestamp yang dapat digunakan dalam file teks. (Judul pertanyaan yang berbeda di masa lalu, sehingga pengenalan untuk jawaban ini diubah untuk menjelaskan bagaimana hal itu bisa diartikan sebagai waktu. [updated 2016-01-14])
Anda bisa mendapatkan timestamp sebagai string menggunakan .now()
atau .utcnow()
dari datetime.datetime
:
>>> import datetime
>>> print datetime.datetime.utcnow()
2012-12-15 10:14:51.898000
Masa sekarang
berbeda dari utcnow
seperti yang diharapkan-jika tidak, mereka bekerja dengan cara yang sama:
>>> print datetime.datetime.now()
2012-12-15 11:15:09.205000
Anda dapat membuat timestamp untuk string secara eksplisit:
>>> str(datetime.datetime.now())
'2012-12-15 11:15:24.984000'
Atau anda dapat menjadi lebih eksplisit untuk format timestamp dengan cara yang anda suka:
>>> datetime.datetime.now().strftime("%A, %d. %B %Y %I:%M%p")
'Saturday, 15. December 2012 11:19AM'
Jika anda ingin format ISO, gunakan .isoformat()
metode dari objek:
>>> datetime.datetime.now().isoformat()
'2013-11-18T08:18:31.809000'
Anda dapat menggunakan ini dalam variabel untuk perhitungan dan cetak tanpa konversi.
>>> ts = datetime.datetime.now()
>>> tf = datetime.datetime.now()
>>> te = tf - ts
>>> print ts
2015-04-21 12:02:19.209915
>>> print tf
2015-04-21 12:02:30.449895
>>> print te
0:00:11.239980
Berdasarkan jawaban dari #squiguy, untuk mendapatkan yang benar timestamp saya akan tipe cast dari float.
>>> import time
>>> ts = int(time.time())
>>> print(ts)
1389177318
Setidaknya itu's konsep.
Jawabannya bisa tidak, atau keduanya.
baik: waktu.waktu()
mengembalikan kira-kira jumlah detik berlalu sejak Zaman. Hasil doesn't tergantung pada timezone sehingga tidak UTC atau waktu lokal. Berikut ini's POSIX defintion untuk "Detik Sejak Epoch".
kedua: waktu.waktu()
doesn't membutuhkan system's waktu untuk disinkronkan sehingga mencerminkan nilai-nilai (meskipun ini tidak ada hubungannya dengan zona waktu lokal). Komputer yang berbeda mungkin mendapatkan hasil yang berbeda pada waktu yang sama. Di sisi lain jika komputer anda waktu adalah disinkronkan maka mudah untuk mendapatkan waktu UTC dari timestamp (jika kita mengabaikan detik kabisat):
dari datetime impor datetime
utc_dt = datetime.utcfromtimestamp(timestamp)
Tentang cara untuk mendapatkan cap dari waktu UTC dalam berbagai versi Python, melihat Bagaimana saya bisa mendapatkan tanggal dikonversi ke detik sejak epoch menurut UTC?
Tidak ada hal seperti itu sebagai "epoch" di zona waktu tertentu. Zaman ini didefinisikan sebagai momen tertentu dalam waktu, jadi jika anda mengubah zona waktu, waktu itu perubahan juga. Secara khusus, kali ini adalah 1 Januari 1970 00:00:00 UTC
. Jadi waktu.waktu()
mengembalikan jumlah detik sejak epoch.
timestamp adalah selalu waktu dalam utc, tetapi ketika anda menelepon datetime.datetime.fromtimestamp
itu kembali waktu anda dalam zona waktu lokal anda sesuai dengan ini timestamp, sehingga hasilnya tergantung dari lokasi anda.
>>> import time, datetime
>>> time.time()
1564494136.0434234
>>> datetime.datetime.now()
datetime.datetime(2019, 7, 30, 16, 42, 3, 899179)
>>> datetime.datetime.fromtimestamp(time.time())
datetime.datetime(2019, 7, 30, 16, 43, 12, 4610)
Di sana ada perpustakaan yang bagus panah
dengan perilaku yang berbeda. Dalam kasus yang sama itu kembali waktu anda objek dengan zona waktu UTC.
>>> import arrow
>>> arrow.now()
<Arrow [2019-07-30T16:43:27.868760+03:00]>
>>> arrow.get(time.time())
<Arrow [2019-07-30T13:43:56.565342+00:00]>