亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C# DateTime.TryParse 讓我很困惑

C# DateTime.TryParse 讓我很困惑

C#
呼啦一陣風 2021-10-23 16:33:51
我DateTime.TryParse在我的程序中使用方法來判斷字符串值是否為DateTime,然后我注意到這一點:DateTime.TryParse("9.08", out DateTime dt)// trueDateTime.TryParse("2.52", out DateTime dt)// false為什么會發生這種情況?
查看完整描述

3 回答

?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

DateTime.TryParse 是當前DateTimeFormatInfo對象中的解析信息,由當前線程文化隱式提供。

由于 DateTime.TryParse(String, DateTime) 方法嘗試使用當前區域性的格式規則解析日期和時間的字符串表示形式,因此嘗試跨不同區域性解析特定字符串可能會失敗或返回不同的結果。如果特定的日期和時間格式將在不同的語言環境中解析

在某些文化中,DateTime分隔符是.而不是 /。

在我的電腦上。

DateTime.TryParse將 Parse"9.08" 是今年'09/08', 2018/09/08是有效的datetime,所以它是true.

DateTime.TryParseParse"2.52"會在今年'02/52',但 2 月沒有第 52 天,2018/02/52不是有效的DateTime,所以它會是false

我會使用DateTime.TryParseExact 來解析 DateTime,因為您可以將您的CultureInfoParseDateTime 字符串設置為參數并確保符合您的預期格式。

DateTime.TryParseExact("09.08",
                       "MM.dd",
                        System.Globalization.CultureInfo.InvariantCulture,
                        System.Globalization.DateTimeStyles.None,
                        out dt);


查看完整回答
反對 回復 2021-10-23
?
慕桂英546537

TA貢獻1848條經驗 獲得超10個贊

根據DateTime.TryParse文檔:

返回一個指示轉換是否成功的值。

由于無法解析"2.52"為任何有效日期,因此返回false.


查看完整回答
反對 回復 2021-10-23
?
Cats萌萌

TA貢獻1805條經驗 獲得超9個贊

除非您每次都試圖了解 .NET 的字符串轉換,否則,您應該無法回答“為什么會發生這種情況?”

DateTime.TryParse 只是一個簡單的條件處理,以防止您在執行時出錯

Convert.ToDateTime(dateString)

因此,DateTime.TryParse = false意味著你不應該Convert.ToDateTime對那個字符串做。

相反,如果字符串為DateTime.TryParse = true,則表示該字符串應符合 .NET 日期字符串的期望(這意味著 .NET 知道如何將該字符串轉換為 DateTime)。


查看完整回答
反對 回復 2021-10-23
  • 3 回答
  • 0 關注
  • 421 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號