簡體   English   中英

無法將字符串識別為有效的DateTime 01:01:0001錯誤

[英]String was not recognized as a valid DateTime 01:01:0001 error

我有如下字符串:

var StringDate = "Mon Oct 02 2017 16:44:23 GMT 0200 (Central European Summer Time)"
DateTime dt = DateTime.Parse(StringDate);

當我將此字符串轉換為日期時,出現錯誤:“字符串未被識別為有效的DateTime異常。” 和dt =“ 01:01:0001 00:00:00”

這不是c#自動識別的有效日期/時間格式。

請改用以下格式:

var StringDate = "Mon Oct 02 2017 16:44:23 +0200";
DateTime dt = DateTime.Parse(StringDate);

您需要修改傳入的字符串。 為此使用正則表達式(刪除括號部分,刪除“ GMT”,並在時間偏移之前添加一個加號)。

另一個選項是使用DateTime.ParseExact() ,但是您仍然需要修改傳入的字符串:

var input = "Mon Oct 02 2017 16:44:23 GMT +0200 (Central European Summer Time)";
var dateTime = DateTime.ParseExact(
    input, 
    "ddd MMM dd yyyy HH:mm:ss 'GMT' zz'00' '(Central European Summer Time)'", 
    CultureInfo.InvariantCulture);

C#希望任何時區信息在數字前都帶有-+ ,因此如果不添加該字符就無法提取時區信息。 僅僅“假設”一個正值是不夠的。

此外,也沒有通配符用於精確的格式匹配,這意味着(Central European Summer Time)將硬編碼在您的匹配字符串中。 如果您具有多個不同的時區,甚至時區的名稱發生更改(例如,夏令時切換時),您都會遇到很多問題。

暫無
暫無

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

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