2010-01-25 8 views
5

Hat .NET eine Konstante für die Anzahl der Sekunden an einem Tag (86400)?.NET Konstante für die Anzahl der Sekunden an einem Tag?

+8

Warum können Sie nicht Ihre eigenen angeben? Es ist nicht wahrscheinlich, bald zu ändern ... –

+0

Nachdem ich die System.Net.WebRequestMethods.Http Konstanten gesehen habe (allgegenwärtig, unveränderlich und häufig benutzt - sehr ähnlich wie SECONDS_IN_A_DAY), hätte es mich nicht überrascht, wenn .NET hätte hat hier etwas geliefert. – lance

+6

Ja, es ist '86400'. Verwenden Sie es jedoch nicht, es ist ein wenig fehlerhaft und gibt immer den Wert 86400 zurück, unabhängig von Schaltsekunden und Gebietsschema. – Zano

Antwort

7

Wenn Sie Lesbarkeit wollen könnten Sie:

(new TimeSpan(1,0,0,0)).TotalSeconds 

obwohl nur Ihre eigene const verwenden könnte klarer sein :)

+0

Nicht eine Konstante, aber lässt mich aus dem zweitzähligen Geschäft. – lance

+2

Diese einfache Antwort hat mich dazu gebracht, meine Herangehensweise zu überdenken. Es ist nicht ganz der Code, den ich verwendet habe, um mein Problem zu lösen, aber ich bin dafür, dass ich eine Antwort gewählt habe, die auf dem Fischfang basiert und nicht auf dem Fisch. Vielen Dank. – lance

+8

Noch besser lesbar: TimeSpan.FromDays (1) .TotalSeconds – ckarras

21

Es ist kein konstanter Wert

http://en.wikipedia.org/wiki/Leap_second

+4

Das ist nicht zu erwarten :) –

+4

Leap Sekunden sind nicht das einzige Problem, Tage, an denen sich die Sommerzeit ändert, haben eine Stunde weniger oder mehr (gezählt von 00: 00-24: 00)) in den entsprechenden Zeitzonen. – GaussZ

+1

Glücklicherweise ist 86400 in etwa 363/365 Fällen gut genug.;) –

2

Nähe Ihrer gehen, um zu erhalten, um dich zu spezifizieren:

System.TimeSpan.TicksPerDay/System.TimeSpan.TicksPerSecond 

Sie auch diese als eine Erweiterung Methode wickeln könnte ...

public static Extensions 
{ 
    public static int SecondsPerDay(this System.TimeSpan ts) 
    { 
     return System.TimeSpan.TicksPerDay/System.TimeSpan.TicksPerSecond 
    } 
} 
3

Es ist nicht eine Konstante ist, ändert sich die Anzahl der Sekunden in einem Tag auf den Tag und die Zeitzone abhängig. Daher wird Microsoft dies wahrscheinlich nicht bieten.

+1

Sie werden mir nicht sagen, dass ein Tag in Arizona nicht die gleichen 24 Stunden lang ist, wie es z. singapur? – Kai

5

Anzahl der Sekunden in einem regulären Tag ist 86400. Aber die Tage, wenn Sommerzeit Änderungen passieren, können kürzer oder länger sein.

Allerdings ist das Schreiben von 24 * 60 * 60 überhaupt keine schlechte Übung, und es ist am wahrscheinlichsten, dass es auch vom Compiler eingearbeitet wird!

2

Es ist tatsächlich im .NET Framework verfügbar. Sie können dazu folgendermaßen gelangen:

using System; 
using System.Reflection; 

public static class DateTimeHelpers { 
    public static int GetSecondsPerDay() { 
    object obj = typeof(DateTime).GetField("MillisPerDay", BindingFlags.NonPublic | BindingFlags.Static).GetValue(null); 
    return (int)obj/1000; 
    } 
} 

Bitte verwenden Sie das nicht.

+0

Sieht für mich nicht wie eine Konstante aus ... :) – stakx

+1

Nun, es sollte nicht sein. Es kümmert sich nahtlos um das .NET-Update, das erforderlich ist, nachdem die Rotation der Erde sich verlangsamt hat. –

3

so viel Aufwand nur für keine const für 60 x 60 x 24 definiert;)

2
double secondsPerDay = TimeSpan.FromDays(1).TotalSeconds; 

Dies war ein Kommentar von @ckarras. Fügen Sie es als Antwort hinzu, um es besser sichtbar zu machen.

Verwandte Themen