【问题标题】:Why string cannot be converted to dateTime?为什么字符串不能转换为日期时间?
【发布时间】:2018-08-19 11:39:29
【问题描述】:

我有这个字符串:

 {2018-06-17 10:05:41}

有时我会尝试将其转换为 DateTime:

  DateTime.ParseExact(cell.StringCellValue, "dd/MM/yyyy", CultureInfo.InvariantCulture);

但我得到了这个例外:

 "String was not recognized as a valid DateTime."

知道为什么上面的字符串不能被识别为 DateTime 以及如何修复它吗?

【问题讨论】:

  • 您确定字符串的格式对 DateTime 解析器正确吗?
  • {2018-06-17 10:05:41}dd/MM/yyyy 不匹配。格式字符串定义输入字符串 ParseExact 在哪里查找日期组件。
  • 使用的模板与提供的字符串不匹配
  • @Dirk dirk 感谢您的帖子!如果我的字符串日期是这样的:"10:05:41 2018-06-17"?
  • @Michael 然后你查看docs.microsoft.com/en-us/dotnet/standard/base-types/… 来确定你的格式字符串。

标签: c# .net datetime


【解决方案1】:

因为您使用了错误的格式 - 2018-06-17 10:05:41yyyy-MM-dd HH:mm:ss(不确定 HH 部分,可能是 hh,但缺少 AM/PM 是一个提示)。

另外,你最好使用TryParseExact 然后ParseExact

DateTime dateTime;
DateTime.TryParseExact(
    cell.StringCellValue, 
    "yyyy-MM-dd HH:mm:ss", 
    CultureInfo.InvariantCulture, 
    DateTimeStyles.None, 
    out dateTime);

因为如果解析失败,您将不必处理异常。

【讨论】:

  • 感谢您的发帖!但在 TryParseExact 方法上出现错误“方法 'TryParseExact' 没有重载需要 4 个参数”。
  • 是的,我从问题中复制了代码并忘记了 DateTimeStyles 参数。现已修复。
猜你喜欢
  • 2015-09-17
  • 2016-05-03
  • 1970-01-01
  • 2019-12-31
  • 2014-04-30
  • 2022-08-18
  • 2017-08-31
相关资源
最近更新 更多