【问题标题】:c# DateTime.ParseExact errorc# DateTime.ParseExact 错误
【发布时间】:2016-05-12 18:12:31
【问题描述】:

我有一个字符串未被识别为有效的日期时间错误。

遵循here. 中的一个示例,其中有一个示例:

dateString = "15/06/2008 08:30"; 
  format = "g"; 
  provider = new CultureInfo("fr-FR"); 
  try { 
     result = DateTime.ParseExact(dateString, format, provider); 
     Console.WriteLine("{0} converts to {1}.", dateString, result.ToString()); 
  }    
  catch (FormatException) { 
     Console.WriteLine("{0} is not in the correct format.", dateString); 
  }  

这是我的代码:

string convertToString = string.Join("", dateTimeId);

DateTime parsedDateTime = DateTime.ParseExact(convertToString, "g", CultureInfo.InvariantCulture);

我有一个字符串数组转换为字符串,因为我正在读取一个日期时间值为“3/16/2002 9:20”的 csv 行。

我也尝试了“MM/dd/yyyy HH:mm”的格式,但仍然遇到同样的错误。

感谢任何提示或帮助。

【问题讨论】:

  • dateTimeId 的价值是什么以及为什么你觉得需要使用string.Join() Method 你想要完成什么你需要查找string.Format 函数跨度>
  • @pavilion Split 的结果是string[] 所以调用Take 会给你一个string,没有理由调用ToArray(返回一个@987654335 @) 只是为了重新创建相同的string,方法是将其传递给string.Join
  • @CodeCaster "g" 本身就是General date/time pattern (short time) 的标准日期格式
  • @pavilion 我认为你被否决了,因为string.Join 真的让人们失望了。这就是为什么最好显示问题的最小重现,在这种情况下可能只是DateTime.ParseExact("3/16/2002 9:20", "g", CultureInfo.InvariantCulture)

标签: c# datetime-parsing


【解决方案1】:

试试这个格式字符串

"M/dd/yyyy H:mm"

如果您指定两个 M 代表月份,两个 H 代表小时,则两者都需要前导零。

或者只使用DateTime.Parse 应该可以。

Console.WriteLine(DateTime.Parse("3/16/2002 9:20", CultureInfo.InvariantCulture));

我越看这个,我就越认为“g”应该起作用。它似乎只有在月份和小时都有前导零时才有效,即使如果您使用它将DateTime格式化为string,它不会放入前导零,至少对于InvariantCulture

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-16
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多