2015-05-15 16 views
7

kodlanmıştır. İşte kod burada. Hala yanlış sonuçlarİngiliz kültürüyle birlikte datetime ay ayına ayrıştırıldığında, hala Türkçe dilinde

olsun
string srRegisterDate = "25.07.2009 00:00:00" 
CultureInfo culture = new CultureInfo("en-US"); 
srRegisterDate = String.Format("{0:dddd, MMMM d, yyyy}", Convert.ToDateTime(srRegisterDate), culture); 

o Saturday, July 25, 2009

Nasıl bu hatayı düzeltebilirim olmalıdır sonuç Yerine Cumartesi, Temmuz 25, 2009

mı?

C# .net v4.5.2

+0

Cumartesi 25 Temmuz, benim Düzenlenen yanıta bakın gerekli kısa bir oldu – CheGueVerra

cevap

4

konudur.

Sen gerekir:

srRegisterDate = String.Format(culture, "{0:dddd, MMMM d, yyyy}", Convert.ToDateTime(srRegisterDate)); 

String.Format için Geçerli çağrı aşırı String.Format Method (String, Object[]) utalizes ve parametresinde geçirilen culture yer tutucu geçti basit bir nesne parametresi olarak kabul edilir. Yer tutucu olmadığı için göz ardı edilmediğini bile görmüyorsunuz. veya String.Format Method (IFormatProvider, String, Object[])

+0

teşekkürler harika çalışıyor – MonsterMMORPG

6

Convert.ToDateTime(srRegisterDate)hala gün ve ay adları dayalı tr-TR benzeyen CurrentCulture kullanır. Cumartesi - Temmuz

'da, argüman olarak üçüncü bir parametre olarak kullandığınız için kültürünüzün yok sayılması gerekir, ancak bunu asla kullanmazsınız.

Kodunuz Format(string format, object arg0, object arg1) aşırı yük olarak adlandırıldı. Ama asla arg1 kullanmazsınız. Bu aşırı yük, bunun bir kültür olduğunu düşünmez. Biçimlendirmek istediğiniz başka bir argümanı olduğunu düşünüyor.

Bu String.Format

bir ilk bağımsız değişken olarak IFormatProvider alan bir aşırı yükleme vardır.

;

srRegisterDate = String.Format(culture, "{0:dddd, MMMM d, yyyy}", Convert.ToDateTime(srRegisterDate)); 

Ama en comman yolu (ve ben her zaman tercih) Eğer .ToString() yöntemi gibi kullanıyor istediğiniz sonucu elde etmek için; arasında String.Format içinde değil DateTime dize dönüştürme ile kültür değerini göz ardı çünkü

srRegisterDate = Convert.ToDateTime(srRegisterDate).ToString("dddd, MMMM d, yyyy", culture); 
+0

Hayır, sorun bu değil, sorun 'DateTime 'dizgeye dönüştürüyor. String.Format, kültür parametresini göz ardı ediyor. – Habib

+0

@Habib Beni kandır. Teşekkürler. Şimdi senin çözümüne benziyor :( –

+0

ama şimdi doğru. :) – Habib

-1

Bu

DateTimeFormatInfo usDtfi = new CultureInfo("en-US", false).DateTimeFormat; 
DateTimeFormatInfo trDtfi = new CultureInfo("tr-TR", false).DateTimeFormat; 
string result = String.Format("{0:dddd, MMMM d, yyyy}", Convert.ToDateTime(srRegisterDate, trDtfi).ToString(usDtfi)); 

orijinal

25.07.2009 00:00:00 çalışır: cultureString.Format kullanılan olmasını istiyorsanız

o zaman aşırı kullanmak zorunda

trans DÜZENLEME

2009/07/25 00:00:00

string test = String.Format("{0:dddd, MMMM d, yyyy}", Convert.ToDateTime(Convert.ToDateTime(srRegisterDate, trDtfi).ToString(usDtfi))); 
+0

OP'nin istediği bu değil. –

+0

evet işe yarayacak, ama bununla birlikte ** başka bir sorun var. ** 'String.Format' ** 'a gerek yoktur, ** bir String parametresi değil, bir' DateTime' ** parametresi geçtiğiniz için formatınız göz ardı edilir. "String result = String.Format" ("{0: yyyy-MM-dd}"), Convert.ToDateTime (srRegisterDate, trDtfi) .ToString (usDtfi)); 'kodunuzu kullanarak, – Habib

+0

örneğini düşünelim. kültür dönüşümü çözmek için .. sry OP – CheGueVerra