簡體   English   中英

datetime問題“字符串未被識別為有效的DateTime”

[英]Issue with datetime “String was not recognized as a valid DateTime”

我正在使用下面的代碼檢查日期時間,它在我的機器上工作正常,但是在部署之后,

“字符串未被識別為有效的DateTime。”

請提供給我在所有機器上均可使用的解決方案。

DateTime date1 = DateTime.Parse("16/05"); MM/dd
string todaydate = DateTime.Now.ToString("MM/dd");

if (Convert.ToDateTime(todaydate) > Convert.ToDateTime(date1.ToString("MM/dd")))
{  //Logic }
DateTime dt = DateTime.ParseExact("16/05", "dd/MM", CultureInfo.InvariantCulture);
if (DateTime.Today > dt)
{
    // your application logic
}

老實說,由於兩個答案都不令我滿意,所以這里是我的兩分錢

讓我們逐行查看您的代碼;

DateTime date1 = DateTime.Parse("16/05");

如果沒有提供IFormatProvider作為其重載的第二個參數,則DateTime.Parse 默認使用CurrentCulture設置。 這意味着,如果您CurrentCulture標准日期和時間模式之一包含dd/MM (或您當前的區域性DateSeparator因為/格式分隔符具有用當前區域性日期分隔符替換我的特殊含義)格式,則此解析操作將成功。 這意味着此行可能會引發FormatException ,具體取決於當前的區域性設置。

string todaydate = DateTime.Now.ToString("MM/dd");

DateTime.Now返回本地當前時間。 使用它的ToString()方法,您嘗試使用MM/dd格式獲取它的字符串表示形式。 可是等等! 您再次使用/格式說明符,但仍然沒有使用任何IFormatProvider 由於此格式說明當前文化日期分隔符替換本身,你todaydate可能是05/1605-1605.16 這完全取決於您當前的文化使用什么日期分隔符。

Convert.ToDateTime(todaydate)

Convert.ToDateTime方法顯式使用DateTime.Parse 這意味着,由於您未提供任何IFormatProvider因此它將再次使用CurrentCulture ,它是標准的日期和時間格式。 正如我所說的, todaydate可能是05/1605-1605.16的結果。 但是,不能保證您當前的區域性能夠成功解析此字符串,因為它的標准日期和時間格式可能沒有MM/dd 如果成功解析"16/05" ,則表示它具有dd/MM格式,在這種情況下,絕對不能使用MM/dd作為標准日期和時間格式。 區域性不能同時解析dd/MMMM/dd格式。 在這種情況下,不知道01/02字符串應解析為1月2日還是2月1日,對嗎?

Convert.ToDateTime(date1.ToString("MM/dd"))

和這里一樣 作為todaydate字符串,這將創建"05/16" (當然,這取決於當前的文化日期分隔符)結果,但仍然不能保證成功解析此結果。

正如評論中所說,沒有必要將字符串解析為DateTime並獲得相同的字符串表示形式。

我強烈懷疑您嘗試比較當前日期是否大於已解析的DateTime,可以使用DateTime.Today屬性與其進行比較。 此屬性將DateTime作為當前日期部分加上午夜作為時間部分。 例如;

DateTime dt;
if(DateTime.TryParseExact("16/05", "dd/MM", CultureInfo.InvariantCulture,
                          DateTimeStyles.None, out dt))
{
     if(DateTime.Today > dt)
     {
          // Your operation
     }
}
DateTime dt = // From whatever source
if (DateTime.Now.Ticks > dt.Ticks)
{
    // Do logic
}

暫無
暫無

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

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