c# - 使用 DateTime.ParseExact 的短时间

标签 c# asp.net .net parsing datetime

我正在尝试解析时间。我已经多次看到这个问题在这里被问过/回答过,但不是针对这个特定场景的。这是我的代码:

var time1 = DateTime.ParseExact("919", "Hmm", CultureInfo.InvariantCulture);

还有

var time2 = DateTime.ParseExact("919", "Hmm", null);

这两个都抛出相同的

"String was not recognized as a valid DateTime"

我想要的是 9:19 AM

有关更多信息,我还需要将 “1305” 解析为 1:05 PM,这工作正常。

在我看来,我使用的格式是正确的。我忽略了什么?

最佳答案

我不确定是否有任何格式可以处理这个问题。问题是“H”可以是一位或两位,所以如果有两位可用,它会同时获取两个数字 - 在这种情况下将其解析为小时 91,这显然是无效的。

理想情况下,您可以将格式更改为 HHmm - 在适当的地方用零填充值 - 这样“0919”就可以正常解析了。或者,在格式中使用冒号来区分小时和分钟。我不相信有任何方法可以让 DateTime 像您希望的那样解析值“919”...所以您需要以某种方式调整字符串在解析它之前。 (我们没有足够的上下文来推荐一种特定的方法。)

关于c# - 使用 DateTime.ParseExact 的短时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28966157/

相关文章:

c# - 如何获取当前 Windows 登录用户的用户名?

c# - 如何滚动到 wpf mvvm 中数据网格中新添加的行

c# - 使用数据访问层为 3 层安排 dotnet 核心应用程序

c# - ASP.NET 从 anchor 获取以 px 为单位的文本位置

c# - 如何将搜索相关数据从数据库检索到列表项?

c# - 替换无效 XML 字符的字符引用

c# - 如何在构造函数中获取参数数量

c# - 架构问题 - 一个中央数据库和访问它的许多不同程序

c# - 如果表达式返回类型为 void,如何获取 null?

c# - 为什么 .NET 4.0 对该数组的排序方式与 .NET 3.5 不同?