objTour.tourStartDate =
Convert.ToDateTime(
DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy", null)
.ToString("MM/dd/yyyy"));
其中txtTourStartDate.Text="16/08/2012"
。格式異常字符串未被識別爲有效日期時間
我已經搜索並閱讀了與此相關的所有帖子。
objTour.tourStartDate =
Convert.ToDateTime(
DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy", null)
.ToString("MM/dd/yyyy"));
其中txtTourStartDate.Text="16/08/2012"
。格式異常字符串未被識別爲有效日期時間
我已經搜索並閱讀了與此相關的所有帖子。
在custom date format string,/
表示區域性特定日期分隔符,而不是字面字符/
。因此,代碼的結果取決於用戶(或服務器)的本地化設置。
爲了使您的代碼獨立的區域性特定的設置,你有兩個選擇:
明確指定使用斜槓作爲日期分隔符,例如文化
DateTime.ParseExact(txtTourStartDate.Text, "dd/MM/yyyy",
CultureInfo.InvariantCulture)
或逃離字符,例如,
DateTime.ParseExact(txtTourStartDate.Text, @"dd\/MM\/yyyy", null)
(注意@
和的\
)。
兩者都應產生期望的結果。
這將是足夠的:
objTour.tourStartDate = DateTime.ParseExact(txtTourStartDate.Text,
"dd/MM/yyyy",
CultureInfo.InvariantCulture);
OMG,我才意識到那是什麼人在做什麼(解析 - >的ToString - > ToDateTime)。當然,你是對的,+1。不管怎樣,我會在這裏保留我的答案,因爲不會逃避'/'是他做錯的另一件事。 – Heinzi
當我看到這個問題時,我真的不知道他是怎麼這樣做的。 – nunespascal
儘管您正在進行大量不必要的轉換,但您的原始代碼仍能正常工作。 (DateTime - > ToString - > ToDateTime),實際問題是InvariantCulture
。由於您通過null
爲CultureInfo
請嘗試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)
感謝它對我的作品... – rahularyansharma