Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Batch e date in inglese
venerdì 28 gennaio 2011 - 11.20
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
supremeprogrammer
Profilo
| Newbie
10
messaggi | Data Invio:
ven 28 gen 2011 - 11:20
Ciao a tutti,
ho problema scocciante. Sto sviluppando un batch in C# 3.5 che deve interfacciarsi con db2.
Il problema è che quando lo faccio girare sul server di sviluppo che ha le impostazioni in inglese,l'esecuzione va in eccezione mostrandomi il seguente messaggio:
"String was not recognized as a valid DateTime"
in pratica mentre in locale la data è del tipo 31/12/2010 12.00.00, sul server viene presa la data nel formato 12/31/2010 12:00:00 AM.
Trattandosi di un batch e non di una applicazione web non posso globalizzare il tutto sul web config.Non so se c'è un modo per farlo aggiungendo qualche chiave nell'app.config.
Ipotizzando una variabile dateString che quindi valorizzo con quello che mi arriva e cioé con qualcosa del tipo : "12/31/2010 12:00:00 AM",ho provato diverse soluzioni:
1) DateTime dateValue = Convert.ToDateTime(dateString, new System.Globalization.CultureInfo("it-IT"));
2) DateTime _dateValue = DateTime.Parse(dateString, new CultureInfo("en-US", false));
DateTime datevalue = Convert.ToDateTime(string.Format("{0:d}", _dateValue));
3) string[] formats = new string[] { "MM/dd/yyyy", "dd/MM/yyyy", "MM/dd/yyyy HH:mm", "dd/MM/yyyy HH.mm", "MM/dd/yyyy hh:mm tt", "dd/mm/yyyy hh.mm tt", "MM/dd/yyyy HH:mm:ss","dd/mm/yyyy HH.mm.ss", "MM/dd/yyyy hh:mm:ss tt", "dd/MM/yyyy hh.mm.ss tt" };
DateTime datevalue = DateTime.ParseExact(dateString, formats, null, DateTimeStyles.None);
4) System.Threading.Thread thisThread = System.Threading.Thread.CurrentThread;
thisThread.CurrentCulture = new System.Globalization.CultureInfo("it-IT");
DateTime datevalue = Convert.ToDateTime(string.Format("{0:d}", dateString));
In tutti i casi l'eccezione lanciata è sempre la stessa.
Ho come la sensazione che sia una questione assai semplice da risolvere.
Qualcuno ha idea di come poterne venire a capo?
Grazie!!
c#_beginner
Profilo
| Newbie
10
messaggi | Data Invio:
dom 30 gen 2011 - 10:08
Allora al momento ho risolto aggiungendo una chiave all'app.config e poi facendo quanto segue considerando che la data da tradure mi arriva tramite query OLEDB e non ODBC tramite la variabile RoDom["prddal"]:
string cultura = ConfigurationManager.AppSettings["culture"].ToString();
Thread.CurrentThread.CurrentCulture = new CultureInfo(cultura);
DateTime _data_dal = DateTime.Parse(RoDom["prddal"].ToString(), new CultureInfo(cultura, false));
CultureInfo ci = new CultureInfo("it-IT");
Thread.CurrentThread.CurrentCulture = ci;
DateTime data_dal = Convert.ToDateTime(_data_dal.ToString("d",ci));
Thread.CurrentThread.CurrentCulture = new CultureInfo(cultura);
Il problema che non mi piace affatto come soluzione,è come minimo poco elegante.
Ho dovuto fare un metodo che fa quanto suscritto per ogni data che elaboro..
Ci vorrebbe qualcosa tipo il globalization a livello di web.config di asp.net. Ma anche perché risolto con le date mo c'ho il problema dei numeri decimali con virgole al posto dei punti...
Ogni aiuto è ben accetto.
Grazie
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !