c# - 输入字符串的格式不正确。在时间跨度内

标签 c#

TimeSpan newEventStartTime = TimeSpan.ParseExact(Start_Time, "HH:mm", CultureInfo.InvariantCulture);

当这行代码执行时,会报错Input string was not in a correct format。 变量Start_Time数据类型在c#中是字符串,在java脚本中是时间。

最佳答案

不久前,我自己在做这样的事情时遇到了麻烦。这里有几处需要在您的格式字符串中修改。

  1. 由于 TimeSpan 类型指的是时间流逝意义上的小时而不是一天中的小时(即使是的,它也用于显示一天中的时间),你想要小写的 hs。大写表示 24 小时制,当您没有 AM 和 PM 的概念时,这是无关紧要的,而 TimeSpan 则没有。
  2. 您需要对冒号进行转义,以使其作为文字在整个解析过程中持续存在。

鉴于此,您可以改为这样做:

TimeSpan newEventStartTime = TimeSpan.ParseExact(Start_Time, @"hh\:mm", CultureInfo.InvariantCulture);

您可以查看 Custom TimeSpan Format Strings MSDN 页面,如果你需要帮助解决这个问题,但我绝对同意这不是世界上记录最好或最容易克服的错误。


这很可能与您无关,但我将其包含在良好的实践中。只有当你真的想保留那个确切的格式字符串时才会这样。如果你可以更宽容一点,你可以使用 "c"格式指示符代替。这允许从传入字符串中保留更多详细信息。这些选项之间的选择实际上取决于您和您希望使用它的环境。但是同样,由于您甚至首先想到了在 Parse 上使用 ParseExact,我怀疑我在上面给出的示例 @"hh\:mm" 就是您要查找的内容。

关于c# - 输入字符串的格式不正确。在时间跨度内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25102116/

相关文章:

c# - 垃圾收集时的 native 线程行为

c# - 在 Controller 中提交时 ViewModel 值为空

c# - 使用委托(delegate)将方法签名传递给线程

c# - 在同一个类中模拟一个方法

c# - 动态参数的问题

c# - 使用 .Net HttpClient 访问 cloudant 数据库

c# - ASP.Net MVC - 正确执行 MVVM

C#:来自字典语法错误的 LINQ 查询,尽管在 SO 中重复使用

c# - 使用 C#.NET 4.0 LINQ 从数组中删除重复项?

c# - 绑定(bind)到字典 - 键为 ' ( '