0

我正在尝试将字符串转换为 DateTime。代码如下:

DateTime.Parse("20131101T210705.282Z").ToShortTimeString()

我收到格式异常。

我尝试提供以下格式“yyyyMMddTssmmhh.fffz”但收到相同的异常。代码如下

DateTime dt;
if (DateTime.TryParseExact("20131101T210705.282Z",
                           "yyyyMMddTssmmhh.fffz",
                          new CultureInfo("en-US"),
                          DateTimeStyles.None,
                          out dt))
    return dt.ToShortTimeString();

在这种情况下,代码不会解析字符串。

4

3 回答 3

1

尝试这个 :

 DateTime dt;
    if (DateTime.TryParseExact("20131101T210705.282Z",
                               "yyyyMMddTssmmhh.fffZ",
                              new CultureInfo("en-US"),
                              DateTimeStyles.None,
                              out dt))
        return dt.ToShortDateString() + " " + dt.ToShortTimeString();
于 2013-11-01T21:41:58.433 回答
0

这可能是一种解析方式。

   var timeStamp = "20131101T210705.282Z";
   var datetime = timeStamp.Split(new[] { 'T' ,'.'});
   DateTime dt1;


  if (DateTime.TryParseExact(datetime[0],
                     new string[] { "yyyyMMdd" },
                    new CultureInfo("en-US"),
                    DateTimeStyles.None,
                    out dt1))
  {
    Console.WriteLine(dt1.ToShortDateString());
  }

  DateTime dt2;


  if (DateTime.TryParseExact(datetime[1],
                     new string[] { "ssmmhh" },
                    new CultureInfo("en-US"),
                    DateTimeStyles.None,
                    out dt2))
  {
    Console.WriteLine(dt2.ToShortTimeString());
  }

  Console.WriteLine(dt1.ToShortDateString() + " " + dt2.ToShortTimeString());
  Console.ReadLine();
于 2013-11-03T18:41:35.843 回答
0

格式完全不正确。由于所有值(小时、分钟和秒)都小于 24,因此给出的时间戳值没有清楚地指示小时的位置。以下代码可以正常工作。

DateTime.TryParseExact(value,
                       "yyyyMMddTHHmmss.fffZ",
                       CultureInfo.InvariantCulture,
                       DateTimeStyles.None,
                       out dt)

鉴于这种专有格式,小时数采用 24 小时格式并排在第一位。今天早上的测试产生了以下值:20131106T162733.032Z。我能够测试这种专有格式,因为我们为同一家公司工作。:)

于 2013-11-06T16:54:46.623 回答