簡體   English   中英

C# DateTime.ParseExact 給出“字符串未被識別為有效的日期時間值。”

[英]C# DateTime.ParseExact gives "The string was not recognized as valid DateTime-value."

我嘗試調試,它說“字符串是/未被識別為有效的日期時間值”,我在這個網站上找到了大約 20 篇關於這個的帖子,並嘗試了其中的每一個,沒有任何區別,或者它給出了額外的錯誤“0不是有效值”。 我究竟做錯了什么? 因為它沒有顯示任何錯誤,而是每次都停止調試並給出錯誤。

dToday2 和 cExpiration 我想從字符串轉換為 DateTime 值,然后在代碼的底部比較它們。

請注意,cExpiration 來自 textBox9.text,它是來自保存文件的直接 readAllText 流,因此我希望它將保存的文件解析為 DateTime。

            string cheatExpiration = System.IO.File.ReadAllText(@"C:\xWQcixf07xES5yf5V5A6\UKI9nRuJgZA611zQCyIq.txt");
            DateTime dateToday = DateTime.Today;
            string dateToday2 = DateTime.Today.ToString();
            textBox8.Text = dateToday2;

            textBox9.Text = cheatExpiration;
            DateTime cExpiration = DateTime.ParseExact(textBox9.Text, "yyyy/MM/dd HH:mm", System.Globalization.CultureInfo.InvariantCulture);
            DateTime dToday2 = DateTime.ParseExact(dateToday2, "yyyy/MM/dd HH:mm", CultureInfo.InvariantCulture);

            if (dToday2 < cExpiration)
            {

            }

我希望它解析 textBox9.text 例如 2019/01/17 01:01 但我不知道,因為我什至沒有使用它的工作經驗,所以我不確定。

更新

在此處輸入圖片說明

你的問題和我們想的一樣,你的日期時間不是格式"yyyy/MM/dd HH:mm" ,它"yyyy/MM/dd HH:mm\\r\\n"

那么我們該如何修復呢? 我們可以使用String.Trim方法,該方法將從字符串中刪除任何空格或回車

DateTime cExpiration = DateTime.ParseExact(cheatExpiration.Trim(), "yyyy/MM/dd HH:mm", System.Globalization.CultureInfo.InvariantCulture);

您需要縮小有效輸入和無效輸入之間的問題。 例如,這里是工作正常的輸入:

var dt = DateTime.ParseExact("2019/01/17 01:01", "yyyy/MM/dd HH:mm", System.Globalization.CultureInfo.InvariantCulture);
Console.WriteLine("{0}", dt);

從這個開始,添加更多你自己的代碼直到它中斷,然后准確縮小導致它中斷的變化。

通過將今天的日期轉換為字符串,然后嘗試再次將其轉換回 DateTime,您將面臨其他解析錯誤。 這是因為調用 ToString() 將導致不同地區和/或文化的不同輸出。 相反,只需直接比較 DateTime.Today:

// this includes the Trim() suggested by the others
string cheatExpiration = System.IO.File.ReadAllText(@"C:\xWQcixf07xES5yf5V5A6\UKI9nRuJgZA611zQCyIq.txt").Trim();
DateTime cExpiration = DateTime.ParseExact(cheatExpiration, "yyyy/MM/dd HH:mm", System.Globalization.CultureInfo.InvariantCulture);
if (DateTime.Today < cExpiration)
{

}

暫無
暫無

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

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