Ordinale Formato data C #
Domanda
Problema:
Si sono dati date in un formato di AAAAGGG, che è l'anno, seguito dal giorno dell'anno, da 1 a 365 (366). Per esempio oggi sarebbe 2.009.135 (5/15/2009).
Qual è il modo migliore per creare una nuova datetime da questo? In Ruby So che c'è un costruttore che prende due numeri in questo modo
Date.ordinal(2009, 135)
C'è un costruttore simile per C #?
Soluzione
Hmm, non sono sicuro se c'è un modo più diretto, ma questo dovrebbe funzionare
new DateTime(year, 1, 1).AddDays(day - 1);
Altri suggerimenti
Come su:
new DateTime(ordinal / 1000, 1, 1).AddDays((ordinal % 1000) - 1);
Questa si basa il giorno 1 del 2009 viene rappresentato come 2.009.001 piuttosto 20091 però. Se si tratta di quest'ultimo, è un po 'più complicato (anche se ancora non esattamente difficile, ovviamente).
Vorrei cercare di allontanarsi da un formato ad esempio abbastanza rapidamente anche se - non è esattamente un comune, ed è completamente illeggibile. Supponendo che il formato "2009001" almeno ordina ragionevolmente, ma non riesco a pensare a molto altro a suo favore.
int year = 2009;
int month = 1;
int day = 1;
int dayOfYear= 135;
DateTime myDate = new DateTime(year, month, day);
myDate.AddDays(dayOfYear - 1);