【问题标题】:Convert string 2020-05-14T13:37:49.000+0000 to DateTime using format使用格式将字符串 2020-05-14T13:37:49.000+0000 转换为 DateTime
【发布时间】:2020-06-15 13:50:55
【问题描述】:

我有一个日期时间作为字符串 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'
    }

【问题讨论】:

标签: c# json datetime format


【解决方案1】:

你应该使用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);

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-12
      • 1970-01-01
      • 2020-09-04
      • 1970-01-01
      相关资源
      最近更新 更多