Ana cevabın hala çok net olmadığını düşünüyorum ve zamanı ve saat dilimlerini anlamak için zaman ayırmaya değer .
Zamanla uğraşırken anlaşılması gereken en önemli şey, zamanın göreceli olduğudur !
2017-08-30 13:23:00
: (saf bir tarih-saat), dünyanın herhangi bir yerinde yerel bir saati temsil eder , ancak 2017-08-30 13:23:00
Londra'nın San Francisco'daki gibi AYNI ZAMAN DEĞİLDİR2017-08-30 13:23:00
.
Aynı zaman dizisi, dünyanın neresinde olduğunuza bağlı olarak farklı zamanda farklı noktalar olarak yorumlanabildiğinden, mutlak bir zaman kavramına ihtiyaç vardır .
Bir UTC zaman damgası saniye (veya milisaniye) bir sayıdır gelen Epoch (olarak tanımlanır 1 January 1970 00:00:00
deGMT
: 00, saat dilimi farkı +00).
Epoch, GMT saat dilimine bağlıdır ve bu nedenle zaman içinde mutlak bir noktadır. Bir UTC zaman damgası , mutlak bir zamandan bir uzaklık olan bu nedenle, zaman içinde mutlak bir noktayı tanımlar .
Bu, olayları zamanında sipariş etmeyi mümkün kılar.
Zaman dilimi bilgisi olmadan, zaman görecelidir ve saf tarih saatinin hangi saat dilimine bağlı olması gerektiğine dair bir gösterge sağlamadan mutlak bir zaman kavramına dönüştürülemez .
Bilgisayar sisteminde kullanılan zaman türleri nelerdir?
naive datetime : genellikle işletim sisteminin programa saat dilimi bilgilerini sağlayabileceği yerel saatte (yani tarayıcıda) görüntüleme içindir.
UTC zaman damgaları : Bir UTC zaman damgası, yukarıda belirtildiği gibi, zaman içinde mutlak bir noktadır, ancak belirli bir saat dilimine sabitlenmiştir, bu nedenle bir UTC zaman damgası herhangi bir saat diliminde bir tarih saatine dönüştürülebilir , ancak saat dilimi bilgisi içermez . Bu ne anlama geliyor? Bu, 1504119325'in 2017-08-30T18:55:24Z
veya 2017-08-30T17:55:24-0100
veya aynı zamanda karşılık geldiği anlamına gelir 2017-08-30T10:55:24-0800
. Size kaydedilen tarih saatinin nereden geldiğini söylemez . Genellikle kayıt olaylar (günlükleri, vb ...) veya dönüştürmek için kullanılan sunucu tarafında kullanılan zaman dilimi farkında datetime bir karşı zamanında mutlak nokta ve hesaplama zamanı farklılıkları .
ISO-8601 tarih saat dizesi: ISO-8601, saat dilimiyle tarih saati kaydetmek için standartlaştırılmış bir biçimdir. (Aslında birkaç format, buradan okuyun: https://en.wikipedia.org/wiki/ISO_8601 ) Sistemler arasında serileştirilebilir bir şekilde zaman dilimine duyarlı tarih-saat bilgisini iletmek için kullanılır.
Hangisi ne zaman kullanılır? Daha doğrusu saat dilimlerini ne zaman önemsemeniz gerekiyor?
Herhangi bir şekilde günün saatini önemsemeye ihtiyacınız varsa , saat dilimi bilgilerine ihtiyacınız vardır. Bir takvim veya alarm, dünyadaki herhangi bir kullanıcı için günün doğru saatinde bir toplantı ayarlamak için günün saatine ihtiyaç duyar. Bu veriler bir sunucuya kaydedilirse, sunucunun tarih saatinin hangi saat dilimine karşılık geldiğini bilmesi gerekir.
Dünyanın farklı yerlerinden gelen olaylar arasındaki zaman farklarını hesaplamak için UTC zaman damgası yeterlidir, ancak olayların günün hangi saatinde gerçekleştiğini analiz etme yeteneğini kaybedersiniz (yani, web analizi için, kullanıcıların ne zaman geleceğini bilmek isteyebilirsiniz. kendi yerel saatlerinde site : sabah veya akşam daha fazla kullanıcı görüyor musunuz? Günün saati bilgisi olmadan bunu çözemezsiniz.
Bir tarih dizesinde saat dilimi uzaklığı :
Önemli olan bir diğer nokta da, bir tarih dizisindeki saat dilimi uzaklığının sabit olmamasıdır . Bu 2017-08-30T10:55:24-0800
, ofset -0800
veya 8 saat geri söylediği için , bunun her zaman olacağı anlamına gelmediği anlamına gelir!
Yaz aylarında, gün ışığından yararlanma saatinde olabilir ve -0700
Bunun anlamı, saat dilimi farkı (+0100) ile saat dilimi adıyla (Avrupa / Fransa) veya hatta saat dilimi tanımıyla (CET) aynı değildir.
America/Los_Angeles
saat dilimi dünyadaki bir yerdir , ancak PST
kışın (Pasifik Standart Saati) saat dilimi ofset gösterimine ve yazın PDT
(Pasifik Yaz Saati) saatine dönüşür .
Bu nedenle, saat diliminin tarih halkasından uzaklığını almanın yanı sıra, saat diliminin adını da doğru olarak almalısınız.
Çoğu paket, sayısal sapmaları kendi başlarına yaz saati uygulamasından standart saate dönüştürebilecek, ancak bu sadece dengeleme ile önemsiz değildir. Örneğin WAT
, Batı Afrika'daki saat dilimi tanımı, UTC + 0100 şeklindedir.CET
Fransa'daki saat dilimi , ancak Fransa gün ışığından yararlanma saatini gözlemlerken, Batı Afrika bunu yapmaz (çünkü ekvatora yakınlar)
Yani kısacası karmaşık. ÇOK karmaşık ve bu yüzden bunu kendiniz yapmamalısınız, ancak bunu sizin için yapan bir pakete güvenin ve BU GÜNCEL TUTUN!
then.strftime('%s')
yerel saati beklemesidir , ancak zaman damgası bunundatetime(2008, 1, 1)
UTC'de olduğunu gösterir .