我必须用日期解析csv (我知道那些日期是utc)。
20200102 07:00:12:342在我的方法中,我像这样ParseExact他们。
DateTimeOffset utcTime1 = DateTimeOffset.ParseExact(csv[0].Trim(), "yyyyMMdd HH:mm:ss:fff", CultureInfo.InvariantCulture, DateTimeStyles.AllowWhiteSpaces);但是结果不是utc,而是我的线程时间。
1/2/2020 7:11:43 AM +01:00
1/2/2020 7:11:45 AM +01:00
1/2/2020 7:11:46 AM +01:00
1/2/2020 7:11:46 AM +01:00
1/2/2020 7:11:47 AM +01:00所以我试了一下:
DateTimeOffset utcTime1 = DateTimeOffset.ParseExact(csv[0].Trim(), "yyyyMMdd HH:mm:ss:zzz", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal);但是它抛出一个错误,无效的日期时间?
发布于 2020-06-07 12:55:40
在第二个字符串中,您提供了错误的格式字符串数毫秒(zzz,与UTC相抵)。文档
"fff“在日期和时间值中的毫秒。
DateTimeOffset.ParseExact("20200102 07:00:12:342", "yyyyMMdd HH:mm:ss:fff", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal)在我的机器上解析到02-Jan-20 7:00:12 AM +00:00。
发布于 2020-06-07 13:07:52
问题在于第二个"yyyyMMdd HH:mm:ss:zzz"中提到的输入格式。
zzz表示与UTC相抵的小时和分钟。
但是实际上您的值是毫秒,这应该是fff指定的值。
因此,正确的格式应该是"yyyyMMdd HH:mm:ss:fff"。
DateTimeOffset utcTime1 = DateTimeOffset.ParseExact("20200102 07:00:12:342", "yyyyMMdd HH:mm:ss:fff", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal);
Console.WriteLine(utcTime1);这个给了我
1/2/2020 7:00:12 AM +00:00
https://stackoverflow.com/questions/62245571
复制相似问题