DateTimeFormat
16.09.2006 04:43
Üç yıl önce yazmış olduğum bir uygulama server değişikliği nedeniyle taşınıyordu.
Yeni Server'da gerekli kurulumları yapıp veritabanı ve asp.net uygulamamızı taşıdık.
Her şey normal çalışırken bir update sırasında "String was not recognized as a valid DateTime" şeklinde bir hata mesajı aldık.
Uygulamada dd.MM.yyyy şekilnde bir tarih formatında kullanmıştım. Ancak uygulama yeni Server'da MM.dd.yyyy formatını kabul ediyordu. İlk aklıma gelen Server'ın Regional Settings'ine bakmak oldu. Tarih foratında normaldi.
Uygulamam farklı bir format kullanıyor deyip web.config içeriside globalization etiketine culture ekleyim dedim
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture = "tr-TR" />
Ancak tarih formatındaki hata devam ediyordu.
DateTime.Parsing() e hatalı format gönderenlerin karşılaşacağını tahmin ettiğim için bu hata mesajını Google da hiç aratmadım. Son çare olarak ufak bir araştırmadan sonra şuna ulaştım :
Convert.ToDateTime(strTarih,System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat);
Sytem.IFormatProvider formatında bir format bilgisi isteyen ikinci parametre mevcut Culture'ın DateTimeFormatını veriyordu. Yani web.config e eklediğim tr-TR nin formatını. Regioanal Settings ve web.config te zaten tarih formatlarımı belirlemişken ve değişken bir Culture yapısına sahip bir uygulama olmamasına rağmen neden tekrar bir tarih formatı istediğini anlayamadım.
Bu yazı 3132 kere okundu.



