簡體   English   中英

C#DateTime.Parse錯誤

[英]C# DateTime.Parse Error

任何人都知道為什么會失敗? 我能夠使用ParseExact解決它,但我想理解為什么它失敗了。

DateTime test = DateTime.Parse("Dec 24  17:45");

日期<“12月24日”工作正常。 日期> = 12月24日因此錯誤失敗:

mscorlib.dll中出現未處理的“System.FormatException”類型異常附加信息:日歷System.Globalization.GregorianCalendar中不支持字符串表示的DateTime。

編輯:感謝Habib注意到即使我沒有收到錯誤,也不是我期待的結果。 所以當不使用支持的格式時要小心DateTime.Parse!

這是我為解決這個問題所做的工作。 我只需要處理兩種不同的格式。 今年將是“MMM dd HH:mm”否則將是“MMM dd yyyy”

if (!DateTime.TryParseExact(inDateTime, "MMM dd HH:mm", System.Globalization.CultureInfo.CurrentCulture, System.Globalization.DateTimeStyles.AllowWhiteSpaces,out outDateTime))
{
    if (!DateTime.TryParseExact(inDateTime, "MMM dd yyyy", System.Globalization.CultureInfo.CurrentCulture, System.Globalization.DateTimeStyles.AllowWhiteSpaces, out outDateTime))
    {
        //Handle failure to Parse
    }
}

日期<“12月24日”工作正常。 日期> = 12月24日因此錯誤而失敗

DateTime.Parse使用標准格式來解析日期以及Day> = 24失敗的原因,就是它將該部分視為小時部分而不是您假設的日期部分

由於允許的小時部分可以在0到23之間,因此適用於那些日期。 (它不被視為一天的一部分)

它也忽略了Dec部分並考慮了該部分的當前日期。

考慮以下示例:

DateTime test = DateTime.Parse("Dec 22 17:45");

它返回:

test = {23/02/2015 10:17:00 PM}

查看時間部分設置為22:17或10:17 PM

您傳遞的DateTime格式無效。 我認為問題是你沒有提供一年的日期部分。 以下是可接受的DateTime示例:

DateTime time = DateTime.Parse("Dec 24 2015 17:45");

暫無
暫無

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

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