2012-06-28 8 views
5

Aggiungo un oggetto a un elenco all'interno di un'applicazione ASP.NET MVC 3 utilizzando il seguente codice ma una delle proprietà dell'oggetto mi dà problemi .I parametri di anno, mese e giorno descrivono un'eccezione DateTime non rappresentabile

ls.Add(new UserRoleModel { UserRoleId = 1, UserName = "Paul", InsertDate = new DateTime(05, 24, 2012),InsertProgram="sqlplus",InsertUser="sp22",Role="Implementation Co-corindator"}); 

Si costruisce ma quando vado alla pagina dedicata ottengo un'eccezione con il seguente tipo:

Exception Details: System.ArgumentOutOfRangeException: Year, Month, and Day parameters describe an un-representable DateTime. 

Ho provato a rimuovere il 0 nel mese, ma ho la stessa eccezione.

+0

Forse questo ha qualcosa a che fare con la "cultura" che stai usando? Stai utilizzando una cultura che ha un ordine diverso per ciascuno degli elementi (anno, mese, giorno) anziché (mese, giorno, anno)? –

+0

http://msdn.microsoft.com/en-us/library/5hh873ya.aspx Questo collegamento mostra alcuni esempi di come cambieresti questo. –

risposta

19

DateTimeconstructor you are calling accetta i parametri nell'ordine anno, mese, giorno.

Le stai fornendo nell'ordine mese, giorno, anno - che finisce con il tentativo di assegnare valori privi di significato. La documentazione è abbastanza chiara su quali sono i valori consentiti e cosa succede se si passa il 2012 per il valore "giorno".

2

se il InsertDate vuole essere la data/ora di creazione si può semplicemente utilizzare il seguente

DateTime InsertDate = DateTime.Now; 
5

Ho appena imbattuto in questo e il mio problema era che stavo creando una data nel mese di febbraio. Ho provato a fare il seguente ...

new Date(2013, 2, 30) 

Poiché non c'è un 30 febbraio, la data non è riuscita a creare. Quando ho cambiato a

new Date(2013, 2, 28) 

ha funzionato bene.

+0

new Date (2013, 2, 28) fallirà se l'anno corrente in questione è un anno bisestile (a causa di 29 giorni a febbraio, ad esempio oggi è 02-29-2016) –

+0

@kishoreperla 28 funzionerà sempre, anno bisestile o no. Il primo numero, 30, che non avevo. Credo di essere passato da gennaio a febbraio – JabberwockyDecompiler

2

Si sta utilizzando un datetime non valido, come per il mese si può essere di passaggio 13,14 giorni più di 31

o qualcosa di simile, che causa il problema.

Problemi correlati