Şuna benzeyen bir dizim var: "9/1/2009". Bir DateTime nesnesine (C# kullanarak) dönüştürmek istiyorum.Neden DateTime.ParseExact() "M/d/yyyy" kullanarak "9/1/2009" ayrıştırmadı
DateTime.Parse("9/1/2009", new CultureInfo("en-US"));
Ama bu neden çalışmıyor anlamıyorum:
Bu işleri
DateTime.ParseExact("9/1/2009", "M/d/yyyy", null);
tarih (gibi "Eylül") hiçbir kelime var ve bildiğim Özel biçim, bu yüzden ParseExact kullanmayı tercih ediyorum (ve neden CultureInfo'nun gerekli olduğunu anlamıyorum). Ama ben "Dize geçerli bir DateTime olarak tanınmamış" istisna alıyorum.
Teşekkürler
Biraz takip edin. Burada
DateTime.ParseExact("9/1/2009", "M'/'d'/'yyyy", null);
DateTime.ParseExact("9/1/2009", "M/d/yyyy", CultureInfo.InvariantCulture);
DateTime.Parse("9/1/2009", new CultureInfo("en-US"));
Ve işe yaramaz 3 edilir: Burada çalışmak 3 yaklaşımlardır
DateTime.ParseExact("9/1/2009", "M/d/yyyy", CultureInfo.CurrentCulture);
DateTime.ParseExact("9/1/2009", "M/d/yyyy", new CultureInfo("en-US"));
DateTime.ParseExact("9/1/2009", "M/d/yyyy", null);
Yani, Ayrıştırma() "en-US" ile çalışır, ancak ParseExact değil ... Beklenmedik?
Hangi .NET sürümünü kullanıyorsunuz? Win7'de PowerShell v2'de ikinci satırı çalıştırdığımda, gayet iyi çalışıyor. – Lee
.net 3.5 xp kullanıyorum. Varsayılan kültür en-us. – Jimmy
"M/d/yyyy" dizesinde, '/' karakterlerinin her biri 'culture.DateTimeFormat.DateSeparator 'dizesi ile değiştirilir. Format sağlayıcı olarak "null" verdiğinizde, mevcut kültür kullanılır. Şimdi, şu anki kültürün "/" veya başka bir dizgeye ("DateSeparator") (http://msdn.microsoft.com/) olarak "-" veya "". "Gibi) olmasına bağlıdır. en-us/kütüphane/system.globalization.datetimeformatinfo.dateseparator.aspx). –