![](/img/trans.png)
[英]Datetime format Issue: String was not recognized as a valid 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/16
, 05-16
或05.16
。 這完全取決於您當前的文化使用什么日期分隔符。
Convert.ToDateTime(todaydate)
Convert.ToDateTime
方法顯式使用DateTime.Parse
。 這意味着,由於您未提供任何IFormatProvider
因此它將再次使用CurrentCulture
,它是標准的日期和時間格式。 正如我所說的, todaydate
可能是05/16
, 05-16
或05.16
的結果。 但是,不能保證您當前的區域性能夠成功解析此字符串,因為它的標准日期和時間格式可能沒有MM/dd
。 如果成功解析"16/05"
,則表示它具有dd/MM
格式,在這種情況下,絕對不能使用MM/dd
作為標准日期和時間格式。 區域性不能同時解析dd/MM
和MM/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.