我有一个日期时间字符串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'
}
您应该使用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;