Unix zaman damgaları saat dilimleri arasında değişir mi?


136

Konunun sorduğu gibi; UNIX zaman damgaları her saat diliminde değişir mi?

Örneğin , dünyanın diğer tarafındaki başka bir e-postaya "Saat 1397484936 olduğunda bir e-posta gönder" şeklinde bir istek gönderirsem , diğer sunucunun zaman damgası benim zamanımın 12 saat gerisinde olur mu?


7
Hayır, belirli bir zamandan beri geçen saniye sayısıdır.
Niklas B.

Yanıtlar:


228

UNIX zaman damgasının tanımı saat diliminden bağımsızdır. Zaman damgası, UTC saatine göre 1 Ocak 1970 gece yarısı olan mutlak bir zamandan bu yana geçen saniye (veya milisaniye) sayısıdır. (UTC, Gün Işığından Yararlanma saati ayarlamaları olmayan Greenwich Ortalama Saatidir.) Saat diliminizden bağımsız olarak, zaman damgası her yerde aynı olan bir anı temsil eder. Tabii ki ileri geri dönüştürmek için yerel bir zaman dilimi temsil isterseniz (zaman 1397484936 New York'ta gibi-ve-yerel saat veya Djakarta bazı diğer yerel zamanı).

Daha uzun bir okuma istiyorsanız , http://en.wikipedia.org/wiki/Unix_time adresindeki makale oldukça etkileyicidir.


19
Diğer hayatımda uçuş öğretmeniyim. Kalkış ve iniş zamanları için UTC'yi ("Zulu saati" olarak da bilinir) kullanırız, böylece saatler arasındaki fark , başlangıç ​​ve bitiş havalimanlarının hangi saat diliminde olduğunu düşünmek zorunda kalmadan, uçuş uzunluğunun doğru bir ölçümü olur. Gerçekten de yaz saati uygulamasında başlayıp ondan sonra biten uçuşları aldım ya da tam tersi!
RobP

19
Bu yanıta +1. Açıklığa kavuşturmaya yardımcı olabilecek bir fikir eklemek için: zaman damgasının kendisi UTC değildir, zaman damgası, zaman içinde bir referans noktasından geçen (mili) saniye sayısıdır. Unix zaman damgası (Unix dönemi) için referans noktası, UTC: 00:00:00 UTC 1970.01.01
Sandman

4
@Sandman'ın yanıtından daha da uzaklaşarak, başlangıçtan itibaren 1397484936 saniye sadece 1397484936 saniyedir. Diğer bilime girmeden, dünyanın her yerinde 1397484936 saniye bu noktada geçti. Bu 1397484936 saniye geçtiğinde New York'ta 16:00:16:00, yerel saat dilimleri
conrad10781

1
@RobP Bu doğru değil. UNIX saat diliminden bağımsız değildir, bunu kendiniz söylediniz in UTC time. İki uzaklık vardır, a raw offsetve DST offset. Örneğin, America/New_Yorkham göreli konum -18000ve DST farkı 3600öyledir, bu nedenle herhangi bir UNIX zaman damgasından UNIX + offset + dstOffsetNew York zaman damgasını almak için matematik işlemlerini yapmanız gerekir .
Maksimum

15

Unix zamanı , 1 Ocak 1970 Perşembe 00:00:00 Eşgüdümlü Evrensel Saat ( UTC ) 'den bu yana geçen saniye sayısı olarak tanımlanır. Yani cevap hayır


5

Her iki bilgisayar da saatleri doğru saat dilimine ve UTC değerlerine ayarlanmış şekilde doğru ayarlanmışsa, aynı değeri döndürmeleri gerekir.
Tabii ki bu büyük bir EĞER. İki bilgisayar tarafından bildirilen zaman arasında en az saniye, daha sıklıkla dakika farkı olduğu neredeyse kesindir. Ve birçok bilgisayar yanlış saat dilimi ayarlarına sahip olacak şekilde ayarlanmıştır ve UTC yerine bir zaman damgası sorulduğunda yerel saatlerini bildirirler.

Ve teori ile pratik arasındaki fark burada yatıyor. Teoride hepsi aynı, pratikte asla ona güvenmemelisiniz.


3

Unix zaman damgaları saat dilimleri arasında değişmez , dünya genelinde standart bir saate sahip olmak amacıyla oluşturulurlar.

NOT: - Zaman damgaları bilgisayardaki geçerli saat temel alınarak hesaplanır, bu nedenle katılan makinelerdeki saat ayarlarından çok emin olmadığınız sürece bunlara güvenmeyin.


3

Birisi "UTC, Gün Işığından Yararlanma saati ayarlamaları olmayan Greenwich Ortalama Saatidir" dedi. Bu kesinlikle doğru değil. GMT'de Yaz Saati Uygulaması yoktur. GMT, İngiltere'deki Greenwich'te ölçülür (Donanma Obeservatuarı'nda) [0 boylam, 0 enlem değil]. UTC ekvatorda ölçülür [0 boylam ve 0 enlem - ki bu Afrika kıyılarında okyanusta uzanır].

Ne fark eder ki? "Saat kaç" açısından bir fark yaratmaz. Bununla birlikte, bir yılı hesaplama açısından bir fark yaratır. Şimdi, bir yılın dünyanın merkezinin (çekirdeğin) konumuna göre ölçüleceğini düşünürsünüz, değil mi? Dünyanın çekirdeği yaklaşık 365 gün önce olduğu yere geri döndüğünde, bir yıl oldu. Bu şekilde ölçülmez. Yaklaşık 365 gün önce olduğu yere (güneşe göre) geri dönen yeryüzündeki belirli bir konumla ölçülür. Ancak bir günün ve bir yılın periyodu eşit olarak bölünmez. Dünya bir yıl önceki haline geri döndüğünde, dünya geçen yılki yönüyle aynı değil, bu yüzden dünyadaki o nokta bir yıl önceki yönüyle aynı değil. Daha kuzeyde olmak, Greenwich, geçen yıl 0 Enlem / 0 Uzun ile aynı noktaya (güneşe göre) geri dönmeyecek. Yani tanımı Greenwith ile 0 / 0'a dayandırırsanız, "bir yılda kaç gün vardır" sorusuna biraz da olsa farklı bir yanıt alırsınız. Başka bir deyişle, dünyadaki belirli bir nokta bir yıl önceki (Güneş'e göre) olduğu yere geri döndüğünde, dünyanın çekirdeği bir yıl önceki ile aynı noktada değildir, öyleyse hangi nokta Önemli olanı seçersiniz, çünkü dünyanın çekirdeği, eğer yeryüzünde farklı bir nokta seçerseniz, bir yıl öncesine göre farklı bir noktada (güneşe göre) olacaktır. "bir yılda kaç gün" sorusuna biraz da olsa farklı bir cevap. Başka bir deyişle, dünyadaki belirli bir nokta bir yıl önceki (Güneş'e göre) olduğu yere geri döndüğünde, dünyanın çekirdeği bir yıl önceki ile aynı noktada değildir, öyleyse hangi nokta Önemli olanı seçersiniz, çünkü dünyanın çekirdeği, eğer yeryüzünde farklı bir nokta seçerseniz, bir yıl öncesine göre farklı bir noktada (güneşe göre) olacaktır. "bir yılda kaç gün" sorusuna biraz da olsa farklı bir cevap. Başka bir deyişle, dünyadaki belirli bir nokta bir yıl önceki (Güneş'e göre) olduğu yere geri döndüğünde, dünyanın çekirdeği bir yıl önceki ile aynı noktada değildir, öyleyse hangi nokta Önemli olanı seçersiniz, çünkü dünyanın çekirdeği, eğer yeryüzünde farklı bir nokta seçerseniz, bir yıl öncesine göre farklı bir noktada (güneşe göre) olacaktır.

Ne UTC ne de GMT'nin yaz saati uygulaması yoktur. Greenwich'in bulunduğu zaman dilimi olan Avrupa / Londra saati öyle. Ancak GMT yapmaz. GMT, Amerikalıların "Standart Saat" dediği şeydir - yani DST'siz.

Soruya geri dönersek, Epoch time teknik olarak bir saat dilimine sahip değil. Zaman içinde belirli bir noktaya dayanır, ki bu tam da "eşit" bir UTC zamanına (bir yılın tam başında ve bir on yılın vb.) Denk gelir. Bu kavram beyninize tam olarak uymuyorsa ve Epoch zamanının UTC'de olduğunu düşünmeye yardımcı oluyorsa, hemen devam edin. İyi bir arkadaşlıktasınız ve işlerin büyük planında, gerçekten önemli değil. Hiç somoene'e 1 dolar verilen davaları gördünüz. Bu bir tür "haklısın, ama gerçekten önemli değil" tipi bir karar. Birisi Epoch saatinin UTC saat diliminde olduğunu söylediğiniz için size dava açarsa, 1 $ kazanır. Bu onlara gezegendeki herhangi bir saat diliminde herhangi bir Starbucks'ta bir fincan kahve satın alamaz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.