2016-04-03 27 views
2

Çoğu programlama dilinde işlevler/sınıflar olduğunu biliyorum, ancak bunu bilmek istiyorum.Unix zamanına bağlı olarak haftanın günü nasıl hesaplanır

Peki: Unix zamanından saniye cinsinden bir gün sayısına nasıl ulaşırım (örneğin, Pazar için 0, Pazartesi için 1, vb.)?

Şimdiden teşekkürler. BTW: Bu, Stack Overflow'taki ilk gönderiim.

+0

https://en.wikipedia.org/wiki/Unix_time –

cevap

6

İstediğiniz sorun, ne kadar karmaşıksa, diğer tarih/saat işlevlerinin ne kadar karmaşık olabileceğine kıyasla oldukça kolaydır (ör. Zeller's congruence).

  1. Unix zaman 00:00 (gece yarısı) UTC, Ocak 1, 1970 geçtikten sonra saniye sayısı olarak tanımlanır.

  2. 1970-01-01 tarihli bir Perşembe olduğunu bulmak için bir takvime bakabilirsiniz. Bir günde 24 * 60 * 60 = 86400 saniyedir.

  3. nedenle 86400 172799 Perşembe, 259199 için 172.800 vb Cumartesi olan bu 86.400 saniyelik bloklar Unix olduğunu 0.

  4. varsayalım T hizalanmış, Cuma are 0 86399 değerlerin zaman damgası. Ardından zemin (T/86400) 1970-01-01 tarihinden sonraki gün sayısını bildirir. 0 = 1 Ocak Perşembe; 1 = 2 Ocak Cuma; 2 = 3 Ocak Cumartesi; vb.

  5. 4 ve modulo 7 ekle. Şimdi 0 → 4; 1 → 5; 2 → 6; 3 → 0; 4 → 1; 5 → 2; 6 → 3; 7 → 4; 8 → 5; 9 → 6; 10 → 0; Bu senin son cevabın. Özetle

  6. : Haftada = günü (katta (T/86400) + 4) mod 7.

  7. (Bu UTC haftanın gününü istediğinizi varsayar İsterseniz. başka bir zaman dilimi için bunu hesaplamak için, size T ilk on saat ve dakika bazılarının eklenmesi veya çıkarma işlemleri gerekir.)

+0

çok teşekkür ederim çok – Jermano

İlgili konular