2009-04-23 5 views
5

La struttura DateTime si occupa di questo? Qualche altra classe/struct?I punti salienti sono stati presi in considerazione in dotNet (o C#)?

UPDATE:

ora ho letto che leapseconds sono annunciati solo 6 mesi di anticipo, dal momento che la rotazione della terra non è che prevedibile ...

Dal momento che non c'è alcuna possibilità di realizzare che in futuro date, posso immaginare che li abbiano appena omessi?

+0

Cosa intendi con "prendersi cura di questo"? A differenza degli anni bisestili in cui hai un giorno in più (29 febbraio), i secondi bisestili non sono così specifici; sono solo un secondo di ritardo tra due minuti, senza questa esplicita distinzione come il 29 febbraio. Quindi, in pratica, ti aspetteresti o ti piacerebbe un TimeSpan tra le date con un secondo intercalare intermedio per restituire i secondi aggiuntivi nella proprietà TotalSeconds, per esempio? – Lucero

+0

in effetti, e hanno volte come il nuovo DateTime (2008, 12, 2, 12, 34, 60) – Peter

risposta

2

Penso che la risposta a entrambe le domande è No. Riferimento: http://silverlight.net/forums/t/12114.aspx

+0

Link non fornisce la risposta. –

+0

@David. Questo perché hanno rimosso quel uri. Sono 7 anni fa. –

3

Per quanto ne so, la struttura di DateTime di .NET NON gestisce automaticamente i secondi bisestili. Non penso che sia possibile impostare secondi più alti di 59 in DateTime di .NET. Tuttavia, in Java, è possibile impostare secondi per essere 0 - 61, perché lo standard ISO per esso consente 2 secondi bisestili all'anno.

EDIT: ho provato per i calci:

Cercando Dim dt As New DateTime(2008, 12, 2, 12, 34, 61) in .NET lanci questo messaggio (61 è il numero di secondi):

"Ora, minuto e secondo i parametri descrivere un DateTime non rappresentabile. "

+1

Una rapida occhiata all'implementazione di DateTime in Reflector mostra la logica nell'helper privato TimeToTicks: ((secondo <0) | | (second> = 60)) ... throw ... – Richard