Tarihler ve saatler hakkında düşünürken - bugün gece yarısı geçmişte mi, yoksa gelecekte mi?


9

Bu her zaman benim için bir bulmaca- ve bunun programlama veya yazılım geliştirmede kesinlikle bir sorun olmadığını, ancak alanımızda makul bir ortak sorun olduğunun farkındayım.

Örneğin, 2011-04-08 00:00:00 olarak bir geçerlilik bitiş tarihi ayarlayacak olsaydım ve şu anki yerel saatimi zaten 8. saatte 10:45 olarak verdiysem - zaten sona ermiş miydim? Yoksa hala yarım günüm kaldı mı?

Gece yarısı hangi gecenin 'ait olduğu' için evrensel bir standart var mı?

Ya da İngiliz ordusundan bir yaprak almalı ve günün 23:59:59'da bitip 00:00:01'de başlamasını ve gece yarısı olmadığını mı söylemeliyim?


bekle bekle, konumun nerede? şimdi hangi tarihte 08 mi 07 mi?
Sufendy

sry - zaten 8th olduğumu daha açık hale getirdi (Adelaide,
SA'dayım

1
Yani temelde 00: 00'dan 10:45: 00'dan daha küçük veya daha büyük mü?
Martin York

Yaprağı alırdım. Programlarla ilgilenen birçok kuruluş 00:00:00 (ve 12:00:00) 'dan kaçınır. 24 saatlik saatler kullanmayan ülkeler için AM / PM belirleyicileri konusunda da bazı karışıklıklar var.
dbasnett

Bazı bağlamlarda 24:00:00, günün sonunda gece yarısını tanımlamak için kullanılır.
CodesInChaos

Yanıtlar:


17

Programlamada düşünüyorum (oracle ve php, emin değilim 'diğer diller hakkında), gece yarısı bir günün başlangıcıdır. Örneğin, trys (sysdate) kullanırsanız, 2011-04-08 00:00:00 alırsınız ki bu bizim geçmişimizdir.

yani, saat 23:59:59 iken 00:00:00 olarak değiştiğinde, tarih aslında 2011-04-08'den 2011-04-09'a değiştirildi


2
Evet, gün gece yarısı saat 00: 00: 00'da geçer.
quickly_now

Bu doğru AFAIK. Bir karışıklık, gündelik konuşmada, "bugün gece yarısı" muhtemelen bugünün sonunda gece yarısı anlamına gelebilir, çünkü bu, insanların uyumadan önce, uyanmadan sonra olma olasılığı daha yüksektir.
Jack V.

3

@Phelios'un cevabına bir zeyilname, 00:00:00 gibi bir zamanınız varsa, bu tam olarak gece yarısı değildir. Aksine, zamanla sonsuz büyüklükte bir nokta kümesidir ve hepsinin birbirlerine maksimum <1 saniye mesafesi vardır. Örneğin, tüm 00: 00: 00.345, 00: 00: 00.567 ve 00: 00: 00.842 gece yarısının yeni gün tarafında açıkça yer alır, ancak gösterim amacıyla "00:00:00" olarak kısaltılır. Aynı şekilde, 23: 59: 59: 899, gece yarısının eski gün tarafında yatar. Yani gece yarısı, pratikte asla vuramayacağınız günler arasında sonsuz kısa bir zaman aralığıdır.


Bu bir kez teori ve 'iddia edilen' uygulama arasındaki farkı söylemek önemlidir : Uygulamada , tarih / saat yazan bir kullanıcı saniyeleri yazmak için zar zor rahatsız edilebilir; yalnız milisaniye. Uygulamada , bir olayın zamanını belirleyen bir zamanlama cihazı milisaniyeyi desteklemeyebilir. Pratikte , bir zamanlama cihazı milisaniyeyi desteklese bile, depolama biçiminin herhangi bir nedenden ötürü zamanın bir kısmını yuvarlamadığını / kesmediğini garanti etmez.
Hayal kırıklığına uğramış

1

Bu, örneğin 0 derece ve 360 ​​derece (ve 720 derece, vb.) Aynı olan dairesel geometri kullanarak açılar arasındaki farkların hesaplanmasına benzer bir sorundur. Peki 350 derece ile 10 derece arasındaki fark nedir?

Cevap: Etrafınızda hangi yolu ölçmek istediğinize bağlıdır - 20 derece veya 340 derece olabilir. Ancak açısal farklılıklar için hesaplama yapmak aslında oldukça dağınık. Basit toplama ve çıkarma işlemlerinin geleneksel olarak çalışmasını sağlayan dahili bir forma dönüştürmediğiniz sürece zaman farkı hesaplamaları benzer şekilde dağınıktır. Ya da her şeyi sihirli bir şekilde sizden uzak tutan modern bir sınıf kütüphanesi kullanırsınız (ve böylece kimseye gerçek detayları asla öğretmez).


her iki durumda da, saatin (veya dairenin) yalnızca bir yolunu 'pozitif' olarak
belirtirsiniz

Doğru. Ancak, hesaplamayı yapmak ve her seferinde doğru yapmak için kod yazmak biraz düşünmeyi gerektirir.
hızlı bir şekilde
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.