提问者:小点点

使用格式将字符串2020-05-14t13:37:49.000+0000转换为日期时间


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

哪一种是有效的格式? YYYY-MM-DDTHH:MM:SS.FFZ对我来说不对

    [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个答案

匿名用户

您应该使用K格式说明符,因为它表示时区偏移量

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

zzz,表示带符号时区偏移量

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

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

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

匿名用户

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

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