c# - C# DateTime.TryParse 让我很困惑
问题描述
我DateTime.TryParse
在我的程序中使用方法来判断字符串值是否为DateTime
,然后我注意到这一点:
DateTime.TryParse("9.08", out DateTime dt)
// true
DateTime.TryParse("2.52", out DateTime dt)
// false
为什么会这样?
解决方案
DateTime.TryParse 是当前DateTimeFormatInfo
对象中的已解析信息,由当前线程区域性隐式提供。
由于 DateTime.TryParse(String, DateTime) 方法尝试使用当前区域性的格式规则解析日期和时间的字符串表示,因此尝试跨不同区域性解析特定字符串可能会失败或返回不同的结果。如果将跨不同语言环境解析特定的日期和时间格式
在某些文化中,DateTime
分隔符是.
而不是 /
.
在我的电脑上。
DateTime.TryParse
"9.08"
今年将 Parse是有效的'09/08'
, 所以它是.2018/09/08
datetime
true
DateTime.TryParse
"2.52"
今年会 Parse '02/52'
,但 2 月没有第 52 天,2018/02/52
不是有效的DateTime
,所以它会是false
。
我会使用DateTime.TryParseExact 来解析 DateTime 因为您可以将您的CultureInfo
和Parse
DateTime 字符串设置为参数并确保符合您的预期格式。
DateTime.TryParseExact("09.08",
"MM.dd",
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None,
out dt);
推荐阅读
- python - 如何在代码执行时使日志记录出现在 Tkinter GUI 或任何文本小部件上?
- xamarin - Azure Pipelines 构建 Xamarin Forms iOS 目标是较新的 Xamarin 版本?
- php - Laravel-Backpack:结合 hasMany 和 hasManyThrough 在列表中添加子句
- javascript - 我想用蓝牙热敏打印机打印收据以响应本机
- github - Markdown中代码语法高亮语言后的`{number}`是什么意思?
- json - 错误消息:在隐式展开可选值时意外发现 nil?
- node.js - 页面重新加载后快速会话不起作用
- graphql - GraphQL 和 Apollo 中的“数据图”和“数据图平台”的确切含义是什么?
- graphql - 尝试使用 11ty 从 Strapi 发布数据时收到 403 错误
- bash - 将摄氏温度转换为华氏温度,Bash 脚本