解析TeamCity(Java?) - 在.NET中生成时间戳?

Rog*_*mbe 7 .net datetime

我正在尝试与TeamCity REST API集成.它包含表单的时间戳20100804T104413+0100.它几乎是 ISO 8601,但不包含连字符.

如何将其从a转换stringDateTime.NET?我试过了:

DateTime.ParseExact(s, "yyyyMMddTHHmmss+zzzz", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

(没有+ zzzz),但我明白了 String was not recognized as a valid DateTime.

Jon*_*eet 9

这对我有用:

using System;
using System.Globalization;

class Test
{
    static void Main()
    {
        string text = "20100804T104413+0100";

        DateTime dt = DateTime.ParseExact
            (text,
             "yyyyMMdd'T'HHmmsszzz",
             CultureInfo.InvariantCulture);
        Console.WriteLine(dt);           
    }
}
Run Code Online (Sandbox Code Playgroud)

你实际上并不需要"T"周围的引号,但我倾向于将它们放入以使模式更清晰.同样地,"zzz"可以是"zzzz" - 但我认为问题是你在"zzz"之前的"+".

请注意,如果您使用相同的格式重新格式化它,您将在偏移说明符的中间以":"结尾:(