使用格式将字符串2020-05-14T13:37:49.000 + 0000转换为DateTime

时间:2020-06-15 13:50:55

标签: c# json datetime format

我有一个日期时间为字符串 2020-05-14T13:37:49.000 + 0000 ,我需要使用C#转换为DateTime。

哪种格式有效? yyyy-MM-ddTHH:mm:ss.FFFZ 对我来说错误

    [TestMethod]
    public void DateTime_Iso8601_is_ok()
    {
        var f = "2020-05-14T13:37:49.000+0000";
         string format = "yyyy-MM-ddTHH:mm:ss.FFFZ";

        DateTime d;
        DateTime.TryParseExact(f, format, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal, out d);


        //FileHelpers.ConvertException: Error Converting '2020-05-14T13:37:49.000+0000' to type: 'DateTime'.  
        //There are more chars in the Input String than in the Format string: 'yyyy-MM-ddTHH:mm:ss.FFFZ'
    }

2 个答案:

答案 0 :(得分:3)

您应使用K format specifier,因为它代表时区偏移量

string format = "yyyy-MM-ddTHH:mm:ss.FFFK";

zzz,表示签名的时区偏移量

string format = "yyyy-MM-ddTHH:mm:ss.FFFzzz";

您也可以将DateTimeStyles更改为AdjustToUniversal以获得5/14/2020 1:37:49 PM日期,否则它将调整为本地时间

DateTime d;
DateTime.TryParseExact(f, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out d);

答案 1 :(得分:-1)

您需要为T和Z添加单引号,例如

DateTime parsedDateTime;    
DateTime.TryParseExact(obj, "yyyy-MM-dd'T'HH:mm:ss'Z'", null, System.Globalization.DateTimeStyles.None, out parsedDateTime);
return parsedDateTime;