Pertanyaan Cara mendapatkan waktu saat ini dengan Python


Apa modul / metode yang digunakan untuk mendapatkan waktu saat ini?


1950
2018-01-06 04:54


asal


Jawaban:


Menggunakan:

>>> import datetime
>>> datetime.datetime.now()
datetime(2009, 1, 6, 15, 8, 24, 78915)

>>> print(datetime.datetime.now())
2018-07-29 09:17:13.812189

Dan tepat waktunya:

>>> datetime.datetime.time(datetime.datetime.now())
datetime.time(15, 8, 24, 78915)

>>> print(datetime.datetime.time(datetime.datetime.now()))
09:17:51.914526

Sama, tetapi sedikit lebih ringkas:

>>> datetime.datetime.now().time()

Lihat dokumentasi untuk informasi lebih lanjut.

Untuk menyimpan pengetikan, Anda dapat mengimpor datetime objek dari datetime modul:

>>> from datetime import datetime

Kemudian lepaskan pemimpinnya datetime. dari semua hal di atas.


1991
2018-01-06 04:57



Kamu dapat memakai time.strftime():

>>> from time import gmtime, strftime
>>> strftime("%Y-%m-%d %H:%M:%S", gmtime())
'2009-01-05 22:14:39'

785
2018-01-06 04:59



Mirip dengan Jawaban Harley, tetapi gunakan str() berfungsi untuk cepat-n-kotor, sedikit lebih mudah dibaca manusia format:

>>> from datetime import datetime
>>> str(datetime.now())
'2011-05-03 17:45:35.177000'

406
2018-05-04 00:56



>>> from datetime import datetime
>>> datetime.now().strftime('%Y-%m-%d %H:%M:%S')

Untuk contoh ini, hasilnya akan seperti ini: '2013-09-18 11:16:32'

Di sini adalah daftar strftime.


367
2018-01-09 05:50



Bagaimana cara mendapatkan waktu saat ini dengan Python?

Itu time modul

Itu time modul menyediakan fungsi yang memberitahu kita waktu dalam "detik sejak zaman" serta utilitas lainnya.

import time

Waktu Epoch Unix

Ini adalah format Anda harus mendapatkan stempel waktu untuk menyimpan dalam basis data. Ini adalah angka floating point sederhana yang dapat dikonversi menjadi integer. Ini juga bagus untuk aritmatika dalam hitungan detik, karena ini mewakili jumlah detik sejak 1 Januari 1970 00:00:00, dan itu adalah cahaya lampu yang relatif terhadap representasi waktu lain yang akan kita lihat berikutnya:

>>> time.time()
1424233311.771502

Stempel waktu ini tidak memperhitungkan lompatan detik, jadi tidak linear - detik kabisat diabaikan. Jadi sementara itu tidak setara dengan standar UTC internasional, itu dekat, dan karena itu cukup bagus untuk kebanyakan kasus pencatatan.

Ini tidak ideal untuk penjadwalan manusia. Jika Anda memiliki acara masa depan yang ingin Anda lakukan pada titik waktu tertentu, Anda akan ingin menyimpan waktu itu dengan string yang dapat dipecah menjadi objek datetime atau objek datetime berseri (ini akan dijelaskan nanti).

time.ctime

Anda juga dapat mewakili waktu saat ini dengan cara yang disukai oleh sistem operasi Anda (yang berarti itu dapat berubah ketika Anda mengubah preferensi sistem Anda, jadi jangan bergantung pada ini menjadi standar di semua sistem, seperti yang pernah saya lihat orang lain harapkan) . Ini biasanya user friendly, tetapi biasanya tidak menghasilkan string yang dapat diurutkan secara kronologis:

>>> time.ctime()
'Tue Feb 17 23:21:56 2015'

Anda dapat menghidrasi cap waktu ke dalam bentuk yang dapat dibaca manusia dengan ctime demikian juga:

>>> time.ctime(1424233311.771502)
'Tue Feb 17 23:21:51 2015'

Konversi ini juga tidak baik untuk pencatatan (kecuali dalam teks yang hanya akan diuraikan oleh manusia - dan dengan Peningkatan Pengenalan Karakter Optik dan Kecerdasan Buatan, saya pikir jumlah kasus ini akan berkurang).

datetime modul

Itu datetime Modul ini juga cukup bermanfaat di sini:

>>> import datetime

datetime.datetime.now

Itu datetime.now adalah metode kelas yang mengembalikan waktu saat ini. Ini menggunakan time.localtime tanpa info zona waktu (jika tidak diberikan, jika tidak perhatikan zona waktu di bawah). Ini memiliki representasi (yang akan memungkinkan Anda untuk menciptakan objek yang setara) bergema pada shell, tetapi ketika dicetak (atau dipaksa ke str), dalam format yang dapat dibaca manusia (dan hampir ISO), dan jenis leksikografi setara dengan jenis kronologis:

>>> datetime.datetime.now()
datetime.datetime(2015, 2, 17, 23, 43, 49, 94252)
>>> print(datetime.datetime.now())
2015-02-17 23:43:51.782461

datetime utcnow

Anda bisa mendapatkan objek datetime dalam waktu UTC, standar global, dengan melakukan ini:

>>> datetime.datetime.utcnow()
datetime.datetime(2015, 2, 18, 4, 53, 28, 394163)
>>> print(datetime.datetime.utcnow())
2015-02-18 04:53:31.783988

UTC adalah standar waktu yang hampir setara dengan zona waktu GMT. (Meskipun GMT dan UTC tidak berubah untuk Waktu Musim Panas, pengguna mereka dapat beralih ke zona waktu lain, seperti Waktu Musim Panas Inggris, selama Musim Panas.)

timezone datetime sadar

Namun, tidak ada objek datetime yang telah kami buat sejauh ini dapat dengan mudah dikonversi ke berbagai zona waktu. Kami dapat mengatasi masalah itu dengan pytz modul:

>>> import pytz
>>> then = datetime.datetime.now(pytz.utc)
>>> then
datetime.datetime(2015, 2, 18, 4, 55, 58, 753949, tzinfo=<UTC>)

Setara dengan, dalam Python 3 kita memiliki timezone kelas dengan utc timezone misalnya terpasang, yang juga membuat objek zona waktu sadar (tetapi untuk mengonversi ke zona waktu lain tanpa berguna pytz Modul yang tersisa sebagai latihan untuk pembaca):

>>> datetime.datetime.now(datetime.timezone.utc)
datetime.datetime(2015, 2, 18, 22, 31, 56, 564191, tzinfo=datetime.timezone.utc)

Dan kita melihat kita dapat dengan mudah mengkonversi ke zona waktu dari objek utc asli.

>>> print(then)
2015-02-18 04:55:58.753949+00:00
>>> print(then.astimezone(pytz.timezone('US/Eastern')))
2015-02-17 23:55:58.753949-05:00

Anda juga dapat membuat objek datetime naif sadar dengan pytz zona waktu localize metode, atau dengan mengganti atribut tzinfo (dengan replace, ini dilakukan secara membabi buta), tetapi ini adalah pilihan terakhir dari praktik terbaik:

>>> pytz.utc.localize(datetime.datetime.utcnow())
datetime.datetime(2015, 2, 18, 6, 6, 29, 32285, tzinfo=<UTC>)
>>> datetime.datetime.utcnow().replace(tzinfo=pytz.utc)
datetime.datetime(2015, 2, 18, 6, 9, 30, 728550, tzinfo=<UTC>)

Itu pytz modul memungkinkan kita untuk membuat kita datetime objek zona waktu sadar dan mengubah waktu ke ratusan zona waktu yang tersedia di pytz modul.

Seseorang dapat secara serentak membuat serial objek ini untuk waktu dan penyimpanan UTC bahwa dalam database, tetapi akan membutuhkan lebih banyak memori dan lebih rentan terhadap kesalahan daripada hanya menyimpan waktu Unix Epoch, yang saya tunjukkan terlebih dahulu.

Cara lain melihat waktu jauh lebih rentan kesalahan, terutama ketika berhadapan dengan data yang mungkin berasal dari zona waktu yang berbeda. Anda ingin tidak ada kebingungan mengenai zona waktu mana string atau objek datetime serial yang dimaksudkan untuk.

Jika Anda menampilkan waktu dengan Python untuk pengguna, ctime berfungsi dengan baik, bukan di atas meja (biasanya tidak begitu bagus), tapi mungkin dalam jam. Namun, saya pribadi merekomendasikan, ketika berurusan dengan waktu dengan Python, baik menggunakan waktu Unix, atau UTC timezone sadar datetime obyek.


203
2018-02-18 05:08



Melakukan

from time import time

t = time()
  • t - Nomor float, baik untuk pengukuran interval waktu.

Ada beberapa perbedaan untuk platform Unix dan Windows.


112
2018-01-06 13:55



>>> from time import gmtime, strftime
>>> strftime("%a, %d %b %Y %X +0000", gmtime())
'Tue, 06 Jan 2009 04:54:56 +0000'

Itu menghasilkan GMT saat ini dalam format yang ditentukan. Ada juga metode localtime ().

Ini halaman memiliki lebih banyak detail.


83
2018-01-06 05:02



Semua saran bagus, tetapi saya merasa paling mudah digunakan ctime() diri:

In [2]: from time import ctime
In [3]: ctime()
Out[3]: 'Thu Oct 31 11:40:53 2013'

Ini memberikan representasi string yang diformat dengan baik dari waktu lokal saat ini.


44
2017-10-31 15:39