2013-04-01 25 views

cevap

198

Sen biçimi için d/M/yyyy kullanırsanız bu tek haneli ve çift basamaklı gün/ay hem idare edecek beri "dd/MM/yyyy"

DateTime dt=DateTime.ParseExact("24/01/2013", "dd/MM/yyyy", CultureInfo.InvariantCulture); 

Onun daha güvenli formatı ile DateTime.ParseExact kullanmak gerekir. Ama bu, tek/çift haneli değerler beklediğinize bağlı.


tarihiniz biçimi day/Month/Year bazı kültürlerde için kabul edilebilir bir tarih biçimini olabilir. Kanadalı Kültür Örneğin en-CADateTime.Parse çalışacak gibi:

DateTime dt = DateTime.Parse("24/01/2013", new CultureInfo("en-CA")); 

Ya

System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-CA"); 
DateTime dt = DateTime.Parse("24/01/2013"); //uses the current Thread's culture 

dize ait biçimi en-CA kültürü için kabul edilebilir, çünkü her ikisi de yukarıdaki satırları çalışacak

. DateTime.Parse aramanıza herhangi bir kültür sağlamadığınızdan, mevcut kültürünüz tarih formatını desteklemeyen ayrıştırma için kullanılır. Bu konuda daha fazla bilgi edinin DateTime.Parse.


ayrıştırma için diğer bir yöntem, hatalı değerler üzerinde özel durum değildir DateTime.TryParseExact

DateTime dt; 
if (DateTime.TryParseExact("24/01/2013", 
          "d/M/yyyy", 
          CultureInfo.InvariantCulture, 
          DateTimeStyles.None, 
    out dt)) 
{ 
    //valid date 
} 
else 
{ 
    //invalid date 
} 

Net çerçevesinde yöntemlerden TryParse grubu kullanarak, bunun yerine başarılı veya hatayı belirten bir bool değer iade ayrıştırma. Ben sırasıyla gün ve ay için d ve M tek kullandık

Bildirimi. Tek d ve M, tek ve çift hanelerde gün ve ay için çalışır.biçimi için Yani d/M/yyyy geçerli değerler olabilir:

  • "24/01/2013"
  • "24/1/2013"
  • "2013/04/12" // 4 Aralık 2013
  • "2013/04/12"

ayrıca okuma için görmeniz gerekir: Custom Date and Time Format Strings

+0

Çok teşekkürler göz atın. DateTime.ParseExact() 'ı çoktan denedim ama sanırım hile üçüncü argüman olarak kaldı. Bunun yerine bir derleme hatası verecek CultureInfo.InvariantCulture kullanıyordum. –

+1

@ user1872530, hoş geldiniz, sizin için çalışmalıydı, ama System.Globalization için deyim kullanarak eksiksiniz sanırım, bu yüzden System.Globalization.CultureInfo.InvariantCulture' yerine – Habib

+1

teşekkürler. "Dd/MM/yyyy" kullanıyordum ve ayrıştırma "3/12/2016" için "d/M/yyyy" olarak değiştirilemedi, gün ve ay değerleri <10'a artık sıfır olarak eklenmeye gerek kalmadı. – ComeIn

8

kullanım DateTime.ParseExact

null

  • DateTime.ParseExact
    string strDate = "24/01/2013"; 
    DateTime date = DateTime.ParseExact(strDate, "dd/MM/YYYY", null) 
    
      biraz tehlikelidir akım kültürü, kullanacaktır. Sen DateTime.ParseExact içinde kullanmak için "dd/MM/yyyy" biçimini kullanabilirsiniz belirli kültürünü

      DateTime date = DateTime.ParseExact(strDate, "dd/MM/YYYY", CultureInfo.InvariantCulture) 
      
  • +0

    "dd/MM/YYYY" yerine "dd/MM/yyyy" kullanmalısınız. – Phoenician

    5

    tedarik deneyin.

    belirtilen biçim ve kültür özgü biçim bilgisini kullanarak eşdeğer onun DateTime için bir tarih ve zaman belirtilen dize gösterimini dönüştürür. Dize gösteriminin biçimi, belirtilen biçimde tam olarak ile eşleşmelidir. İşte

    DateTime date = DateTime.ParseExact("24/01/2013", "dd/MM/yyyy", CultureInfo.InvariantCulture); 
    

    bir DEMO olduğunu.

    Daha detaylı bilgi için, Custom Date and Time Format Strings

    İlgili konular