[英]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.