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 #?

È stato utile?

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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top