我正在处理一些来自世界各地的JSON日期,我收集的日期是UTC,但当我解析JSON数据时,它忽略了'Z',它忘记了这是一个UTC日期,而且date kine是'local‘而不是'utc’,这很奇怪。似乎你需要传入CultureInfo.InvariantCulture,DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal parts才能让它识别Z。所以,如果其他人遇到麻烦,试试这个吧。
DateTime expected = System.DateTime.UtcNow;
// var isoDate = new Date('yourdatehere').toISOString();
string isoDate = expected.ToString("u").Replace(' ', 'T'); // eg "2020-05-04T09:24:03Z vs 2020-05-04T10:24:03 BST
DateTime actual = DateTime.Parse(isoDate); // should process the Z as its a GMT date zulu - FAIL
actual = DateTime.ParseExact(isoDate,
"yyyy-MM-ddTHH:mm:ssZ",
CultureInfo.InvariantCulture,
DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal);// PASS
Assert.IsTrue(expected.Hour == actual.Hour, "Essential Parsing of zulu date");
Assert.IsTrue(actual.Kind == DateTimeKind.Utc ,"surely It must have seen the Z?");
Assert.AreEqual(expected ,actual ,"Back where we started");发布于 2020-05-04 18:07:25
要观察的密钥位是
actual = DateTime.ParseExact(isoDate,
"yyyy-MM-ddTHH:mm:ssZ",
CultureInfo.InvariantCulture,
DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal );// PASShttps://stackoverflow.com/questions/61589717
复制相似问题