Frage

Der Versuch, den Gregoriancalendar zu verwenden, kam ich auf einer Singularität fest, während ich die Anzahl der Tage seit einem bestimmten Datum berechnet hatte. In dem Scala-Dolmetscher trat ich ein:

generasacodicetagpre.

Ich weiß nicht, ob die Tatsache, dass der Tatsache, dass 1976 ein Sprungjahr ist, aber Tage1 und Tage2 sollten jedoch durch 1 getrennt sein müssen. Dies ist der einzige Moment in der Geschichte seit 1970, dass diese Singularität stattfindet.

Möchten Sie wissen, was los ist, berechnet ich den Unterschied zwischen den beiden zuvor erwähnten Terminen, und es gibt mir nur genau 23 Stunden Unterschiede!Was ist an diesem Datum passiert?Wikipedia sagt anscheinend nichts darüber.

und noch wichtiger, wie man die echte Anzahl von Tagen seit einem bestimmten Datum berechnet?

War es hilfreich?

Lösung

Wenn die Option einer Float-Division nicht verfügbar ist, ist die beste Antwort, an die ich mir vorstellen kann, eine Stunde (1000 * 3600) hinzuzufügen, während Sie einen Unterschied zwischen zwei Tagen berechnen:

generasacodicetagpre.

Es sollte für jedes Datum arbeiten, da Sie nicht mehr unter den Schaltstunden leiden.

Andere Tipps

Das Problem

Sommerzeit sind nur 23 Stunden lang.

und laut Dies 28. März 1976 war ein Tageslicht-Tag in mindestens Paris. Die Stunde zwischen 1 Uhr und 2 Uhr morgens existierte einfach nicht.

Obwohl es ein Gebietsschema-Problem sein muss, seit ich auf meinem Computer richtig gehe:

generasacodicetagpre.

Ich bin nicht in Paris oder irgendwo anders, der an diesem Tag eine Zeitänderung hatte; Die Zeit änderte sich am 25. April 1976, wo ich bin. Also bekomme ich das Verhalten "Übersprungenes Tag" an diesem Datum:

generasacodicetagpre.

erwin weist in den Kommentaren auf, dass der wahrscheinliche Grund dafür ist, dass Sie nur die falsche Datumsunterschied hierbei, dass alle anderen Sommerzeit von den 25-stündigen Tagen ausgeglichen werden, die in diesen Jahren, wenn der Sommerzeittag stattfindet wird korrigiert.

die Lösung

Verwenden Sie eine bessere Bibliothek für die Datumsverarbeitung. Der joda-time library macht es ordnungsgemäß (sowie ein besserer Datum / Zeit-Framework insgesamt):

generasacodicetagpre.

dhg hat darauf hingewiesen, was ich denke: Dieser Tag ist eine "Sommerzeit" -Tag. Wie dieser Tag nur 23 Stunden lang ist, ist die euklidische Division von einem Tag gleich 0.

In der Tat verwenden die Verwendung von Gregoriancalendar-Objekten nur ein Datum als Millisekunden, also dadurch, dass ein Tag als Ganzzahl nur ein Ergebnis abschneidet.

Anstelle einer Euklidian-Division (Integer) versuchen Sie, eine Float-Division zu erledigen, dann um das Ergebnis zu runden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top