我必须用日期解析csv(我知道那些日期是utc)。
20200102 07:00:12:342
在我的方法中,我像这样解析它们。
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);
但它会抛出一个错误无效日期时间?
您在第二个字符串(zzz
,与UTC偏移量)中提供了毫秒的错误格式字符串。 文档:
“FFF”日期和时间值中的毫秒。
DateTimeOffset.ParseExact("20200102 07:00:12:342", "yyyyMMdd HH:mm:ss:fff", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal)
解析到我的计算机上的02-jan-20 7:00:12AM+00:00
。
问题出在第二个输入格式“yyyymmmdd hh:mm:ss:zzz”
中提到的输入格式
zzz
代表与协调世界时的时差和分钟差。
但实际上这里的值是毫秒,应该由fff
指定。
所以正确的格式应该是“yyyymmmdd 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