Soru Python'da şimdiki zaman nasıl alınır


Geçerli saati elde etmek için kullanılan modül / yöntem nedir?


1955
2018-01-06 04:54


Menşei




Cevaplar:


kullanın:

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

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

Ve sadece zaman:

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

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

Aynı, ama biraz daha kompakt:

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

Görmek Dökümantasyon daha fazla bilgi için.

Yazmayı kaydetmek için, datetime nesnesinden datetime modülü:

>>> from datetime import datetime

Ardından öncüleri kaldırın datetime. Yukarıdakilerin hepsinden.


2009
2018-01-06 04:57



datetime.datetime.now () ve datetime.datetime.today () aynı mı? datetime.datetime.now (tz = Hiçbiri) saat dilimi bilgisini alır ama datetime.datetime.today () docs.python.org/3.6/library/datetime.html#datetime.datetime.now - Jun
@Jun Yorumunuz bir tür cevabı gibi görünüyor ama bu cevabın ilgisi yok today() Yorumunuzun bu doğru yazı olduğundan emin misiniz? - Mike - SMT
@ Mike-SMT Ben sadece bir yorum yapmak istedim, böylece diğer insanların baştaki farkı bilmediğim için etrafa bakmaları gerekmiyor - Jun


Kullanabilirsiniz time.strftime():

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

787
2018-01-06 04:59



Bu, aşağıdaki ParaMeterz'in cevabından daha iyi / kötü mü? Neden kullanmalıyız time modül vs datetime modül? - frank


Benzer Harley cevapama kullan str() hızlı-n-kirli, biraz daha insan okunabilir formatı için işlev:

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

408
2018-05-04 00:56



Tek istediği şu anki zamanı elde etmek, göstermemek. - ppperry
datetime modülünün takma adı neden önemlidir? yani neden olmasın import datetime iş? - Mike Palmice
@MikePalmice Çalışır, ama yazman gerekecek datetime.datetime.now(). - Gabriel


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

Bu örnekte, çıktı şu şekilde olacaktır: '2013-09-18 11:16:32'

Listesi strftime.


368
2018-01-09 05:50





Python'da şu anki zamanı nasıl alabilirim?

time modül

time modül, "çağlardan beri geçen saniye" ve diğer yardımcı programlardaki zamanı bize bildiren işlevler sağlar.

import time

Unix Döngü Zamanı

Veritabanlarında kaydetmek için zaman damgaları almanız gereken biçim budur. Bir tam sayıya dönüştürülebilen basit bir kayan nokta sayısıdır. Saniyede aritmetik için de iyidir, çünkü 1 Ocak 1970 00:00:00 'den bu yana geçen saniye sayısını temsil eder, ve sonraki baktığımız zamanın diğer temsillerine göre hafıza ışığıdır:

>>> time.time()
1424233311.771502

Bu zaman damgası, artık saniye içermez, bu nedenle doğrusal değildir - artık saniye göz ardı edilir. Yani, uluslararası UTC standardına eşdeğer değilken, çoğu kayıt tutma için yakın ve bu nedenle oldukça iyi.

Ancak bu, insan planlaması için ideal değildir. Belirli bir zamanda gerçekleşmek istediğiniz bir gelecek etkinliğiniz varsa, bu süreyi bir datetime nesnesine veya serileştirilmiş bir datetime nesnesine ayrıştırılabilen bir dizeyle saklamak isteyeceksiniz (bunlar daha sonra açıklanacaktır).

time.ctime

Geçerli saati işletim sisteminiz tarafından tercih edilen şekilde de temsil edebilirsiniz (bu, sistem tercihlerinizi değiştirdiğinizde değişebileceği anlamına gelir, bu nedenle başkalarının beklediği gibi tüm sistemlerde standart olarak buna güvenmeyin) . Bu genellikle kullanıcı dostudur, ancak tipik olarak kronolojik olarak sıralayabileceğiniz dizelerle sonuçlanmaz:

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

Zaman damgasını insan okunabilir formuna ctime ayrıca:

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

Bu dönüşüm, kayıt tutma için de iyi değildir (yalnızca insanlar tarafından çözümlenecek metinler hariç - ve Optik Karakter Tanıma ve Yapay Zeka ile, bu vakaların sayısının azalacağını düşünüyorum).

datetime modül

datetime modül de burada oldukça yararlıdır:

>>> import datetime

datetime.datetime.now

datetime.now geçerli zamanı döndüren bir sınıf yöntemidir. Kullanır time.localtime zaman dilimi bilgisi olmadan (aksi halde verilmediyse, aksi halde saat dilimini aşağıda görebilirsiniz). Kabuğun üzerinde yankılanan, ancak (bir eşdeğer bir nesneyi yeniden oluşturmanıza izin veren) bir temsile sahiptir. str), insan tarafından okunabilir (ve neredeyse ISO) biçimindedir ve sözlüksel sıralama kronolojik sıralamaya eşdeğerdir:

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

tarih saat en utcnow

Bunu yaparak bir datetime nesnesini UTC zamanında, global bir standartta alabilirsiniz:

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

UTC, GMT saat dilimine neredeyse eşdeğer bir zaman standardıdır. (GMT ve UTC, Yaz Saati Uygulaması için değişmezken, kullanıcıları Yaz döneminde, İngiliz Yaz Saati gibi başka saat dilimlerine de geçiş yapabilirler.)

datetime timezone farkında

Bununla birlikte, şimdiye kadar oluşturduğumuz datetime nesnelerinin hiçbiri kolaylıkla çeşitli saat dilimlerine dönüştürülemez. Bu sorunu pytz modülü:

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

Eşdeğer, Python 3'te timezone utc ile sınıf timezone ekli nesne, aynı zamanda nesne zaman dilimini fark eder (ancak kullanışlı olmadan başka bir zaman dilimini dönüştürür) pytz modül okuyucuya bir egzersiz olarak bırakılır):

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

Ve biz orijinal utc nesnesinden kolayca saat dilimlerine dönüşebileceğimizi görüyoruz.

>>> 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

Ayrıca, naif datetime nesnesini de pytz saat dilimi localize yöntemini veya tzinfo özniteliğini ( replace, bu körü körüne yapılır), ama bunlar en iyi uygulamalardan daha fazla son beldelerdir:

>>> 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>)

pytz modül bizim yapmak için bize izin verir datetime nesneleri zaman dilimi farkında ve zaman içinde mevcut saat dilimlerinin yüzlerce kez dönüştürmek pytz modülü.

Bir kişi UTC zamanı ve mağaza için bu nesneyi serileştirebilir o Bir veritabanında, ancak çok daha fazla belleğe ihtiyaç duyar ve ilk önce gösterdiğim Unix Epoch zamanını saklamaktan ziyade hataya daha açık olmasını isterdim.

Diğer görüntüleme zamanları, özellikle farklı saat dilimlerinden gelebilecek verilerle uğraşırken çok daha fazla hataya eğilimlidir. Bir dize veya serileştirilmiş bir datetime nesnesinin amaçlandığı zaman dilimi konusunda karışıklık olmamasını istersiniz.

Kullanıcı için Python ile saati görüntülüyorsanız, ctime güzel çalışır, bir tabloda değil (genellikle iyi sıralamaz), ama belki bir saat içinde. Ancak, Python'da zamanla uğraşırken, Unix zamanını veya bir saat dilimi farkında UTC'yi kullanırken kişisel olarak öneriyorum. datetime nesne.


207
2018-02-18 05:08





Yap

from time import time

t = time()
  • t - Float numarası, zaman aralığı ölçümü için iyi.

Unix ve Windows platformları için bazı farklar var.


113
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'

Bu, belirtilen formatta mevcut GMT'yi çıkarır. Ayrıca bir localtime () yöntemi de vardır.

Bu sayfa daha fazla detay var.


83
2018-01-06 05:02





Tüm iyi öneriler, ancak kullanımı en kolay ctime() kendim:

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

Bu geçerli yerel zamanın güzel biçimlendirilmiş dize temsilini verir.


45
2017-10-31 15:39





Şu anki zamana ihtiyacınız varsa time nesne:

>>> import datetime
>>> now = datetime.datetime.now()
>>> datetime.time(now.hour, now.minute, now.second)
datetime.time(11, 23, 44)

35
2017-12-27 10:24





En hızlı yol

>>> import time
>>> time.strftime("%Y%m%d")
'20130924'

32
2017-09-24 11:21