【问题标题】:String to DateTime Parsing字符串到日期时间解析
【发布时间】:2014-03-14 09:42:27
【问题描述】:

我正在解析一些将日期时间值保存为文本的 XML 文件。我找不到下面的格式是什么 -

20110123T233356,00-05

我尝试了DateTime.Parse 和DateTimeOffset.Parse,但都失败了。我还尝试在 here 和 here 等几个地方识别字符串,但没有成功。

【问题讨论】:

  • 看起来是 yyyyMMddTHHmmss,xx-xx,其中 xx-xx 是我不知道的数字。上下文是什么?
  • @Rik - 字符串未被识别为有效的日期时间。
  • 我想你的问题在这里得到了回答。 stackoverflow.com/questions/341175/…
  • @rikitikitik:看起来-05是UTC时区偏移量,所以逗号后面的值可能是ff。
  • T 用于将日期与字符串的时间部分分开。

标签: c# datetime


【解决方案1】:

假设“,00”是百分之一秒,“-05”是时区,你可以这样解析:

string dateStr = "20110123T233356,00-05";
string format = @"yyyyMMdd\THHmmss\,ffzz";

DateTime result;

if (DateTime.TryParseExact(dateStr, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
{
    Console.WriteLine(result);
}
else
{
    Console.WriteLine("Can't parse the date: " + dateStr);
}

不过,这是一个很大的假设。

请注意,您还可以指定格式字符串而不转义T 或,,如下所示(但我将它们转义以更明显地表明它们不是格式字符):

string format = "yyyyMMddTHHmmss,ffzz";

【讨论】:

  • 不是一个“大”假设(这是迄今为止最有可能的情况),但仍然是一个假设。
  • 完美运行。现在,我将做出这个大假设。谢谢。
  • 如果我错了,请纠正我,但格式字符串中不需要斜杠。
  • @Rik 没错——我在回答的最后提到了这一点。我只是想通过用斜杠转义来使非格式字符更加明显。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-22
  • 1970-01-01
  • 2012-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多