.NET ha una costante per il numero di secondi in un giorno (86400)?Costante di .NET per il numero di secondi in un giorno?
risposta
Se si vuole migliorare la leggibilità è possibile utilizzare:
(new TimeSpan(1,0,0,0)).TotalSeconds
se usando solo il proprio const potrebbe essere più chiaro :)
Non una costante, ma mi lascia fuori dal business del secondo conteggio. – lance
Questa semplice risposta mi ha fatto ripensare all'approccio che stavo prendendo. Non è proprio il codice che ho usato per risolvere il mio problema, ma sono tutto per scegliere una risposta basata sulla pesca che ha insegnato piuttosto che sul pesce che ha fornito. Grazie. – lance
Ancora più leggibile: TimeSpan.FromDays (1) .TotalSeconds – ckarras
Non è un valore costante
Questo è inaspettato :) –
I secondi di ritardo non sono l'unico problema, i giorni in cui le modifiche dell'ora legale si verificano hanno un'ora in meno o più (il conteggio da 00: 00-24: 00) nei tempi previsti. – GaussZ
Fortunatamente, in circa 363/365 casi, 86400 è abbastanza buono.;) –
più vicino la vostra andando a ottenere w/o specificando il proprio:
System.TimeSpan.TicksPerDay/System.TimeSpan.TicksPerSecond
si potrebbe anche avvolgere questo come un metodo di estensione ...
public static Extensions
{
public static int SecondsPerDay(this System.TimeSpan ts)
{
return System.TimeSpan.TicksPerDay/System.TimeSpan.TicksPerSecond
}
}
E non è una costante, il numero di secondi in un giorno varia a seconda del giorno e il fuso orario. Quindi non è qualcosa che Microsoft probabilmente offrirà.
non mi dirai che un giorno in arizona non è la stessa lunga 24 ore che è in, ad es. Singapore? – Kai
Numero di secondi in un normale giorno è 86400. Ma i giorni in cui i cambiamenti di ora legale possono accadere possono essere più brevi o più lunghi.
Tuttavia, scrivere 24 * 60 * 60 non è affatto una cattiva pratica, ed è molto probabile che sia anche in-line dal compilatore!
In realtà è disponibile nel framework .NET. È possibile ottenere in questo modo:
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;
}
}
Si prega di non usare quello.
Non sembra una costante per me ... :) – stakx
Beh, non dovrebbe essere. Gestisce agevolmente l'aggiornamento .NET richiesto dopo che la rotazione della Terra rallenta abbastanza. –
tanta fatica solo per non definire un const per 60 x 60 x 24;)
double secondsPerDay = TimeSpan.FromDays(1).TotalSeconds;
Questo è stato un commento da @ckarras. Aggiungendolo come risposta per renderlo più visibile.
Perché non è possibile specificare il proprio? Non è probabile che cambi presto ... –
Dopo aver visto le costanti System.Net.WebRequestMethods.Http (onnipresente, immutabile e comunemente usato - proprio come SECONDS_IN_A_DAY), non mi avrebbe sorpreso se .NET avesse fornito qualcosa qui. – lance
Sì, è '86400'. Non lo uso però, è un po 'buggato, e restituisce sempre il valore 86400, indipendentemente dal secondo e dalle impostazioni internazionali. – Zano