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