簡體   English   中英

如何在C#中基於文化動態轉換日期時間

[英]How to convert datetime dynamically based on culture in c#

我已經在C#中創建了WPF應用程序。 在此應用程序中,我創建了一個報告,該報告是從用戶獲取日期的。 為了獲取日期,我正在使用C#datetime控件。 我的日期時間控件根據計算機區域性顯示值。 例如,當我在我的機器中從控件中選擇日期時,它會顯示“ 27-1-2017 12.00.00 AM”;當我在其他機器中測試我的應用程序時,它會顯示27/1/2017 12.00.00 AM

所以我的問題是,我收到錯誤消息“字符串未被識別為有效的DateTime”。 轉換日期時間時。

我已經嘗試過DateTime.ParseExact,DateTime.Parse,但是仍然無法成功解決我的問題。

 DateTime l_dtFrom = Convert.ToDateTime("27-1-2017 12.00.00 AM", CultureInfo.CurrentCulture);
 string l_sFromDate = l_dtFrom.ToString("yyyy-MM-dd HH:mm:ss");

為了避免解析日期時間字符串,該日期時間字符串取決於當前的UI線程區域性,而后者又可能取決於客戶端的區域設置,您應該從DatePicker控件中獲取SelectedValue

如果您使用的是其他控件,則最肯定的是,它將以DateTime或更佳的DateTime提供所選值DateTime? (如果沒有選擇,則為null)。 使用它,以對文化不敏感的方式工作。

嘗試

DateTime result = DateTime.ParseExact("27-1-2017 12.00.00 AM", "dd-MM-yyyy hh.mm.ss a", CultureInfo.InvariantCulture);

使用ParseExact ,您應該傳遞字符串傳遞的確切格式。

或嘗試使用CultureInfo.InvariantCulture作為Convert.ToDateTime的格式提供Convert.ToDateTime

編輯:根據您提供的字符串格式,我對答案做了一些更新。 立即查看格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM