2012-08-31 64 views

回答

4

custom date format string/表示區域性特定日期分隔符,而不是字面字符/。因此,代碼的結果取決於用戶(或服務器)的本地化設置。

爲了使您的代碼獨立的區域性特定的設置,你有兩個選擇:

  • 明確指定使用斜槓作爲日期分隔符,例如文化

    DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy", 
            CultureInfo.InvariantCulture) 
    
  • 或逃離字符,例如,

    DateTime.ParseExact(txtTourStartDate.Text, @"dd\/MM\/yyyy", null) 
    

    (注意@\)。

兩者都應產生期望的結果。

+0

感謝它對我的作品... – rahularyansharma

2

這將是足夠的:

objTour.tourStartDate = DateTime.ParseExact(txtTourStartDate.Text, 
              "dd/MM/yyyy", 
              CultureInfo.InvariantCulture); 
+0

OMG,我才意識到那是什麼人在做什麼(解析 - >的ToString - > ToDateTime)。當然,你是對的,+1。不管怎樣,我會在這裏保留我的答案,因爲不會逃避'/'是他做錯的另一件事。 – Heinzi

+0

當我看到這個問題時,我真的不知道他是怎麼這樣做的。 – nunespascal

2

儘管您正在進行大量不必要的轉換,但您的原始代碼仍能正常工作。 (DateTime - > ToString - > ToDateTime)實際問題InvariantCulture。由於您通過nullCultureInfo請嘗試CultureInfo.InvariantCulture

您的原始代碼:

objTour.tourStartDate = 
    Convert.ToDateTime(
     DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture) 
      .ToString("MM/dd/yyyy")); 

一個更好的可能是:

objTour.tourStartDate = 
DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture) 
相關問題