Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 日期时间偏移量_C# - Fatal编程技术网

C# 日期时间偏移量

C# 日期时间偏移量,c#,C#,我必须用日期解析csv(我知道这些日期是utc) 在我的方法中,我像这样解析它们 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/

我必须用日期解析csv(我知道这些日期是utc)

在我的方法中,我像这样解析它们

   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”日期和时间值中的毫秒


在我的机器上解析到
02-Jan-20 7:00:12 AM+00:00

问题在于第二个
“yyyyMMdd HH:mm:ss:zzz”中提到的输入格式。

zzz
表示从UTC偏移的小时和分钟

但实际上这里的值是毫秒,应该是
fff
指定的值

    DateTimeOffset utcTime1 = DateTimeOffset.ParseExact("20200102 07:00:12:342", "yyyyMMdd HH:mm:ss:fff", CultureInfo.InvariantCulture,  DateTimeStyles.AssumeUniversal);
    Console.WriteLine(utcTime1);
因此,正确的格式应该是
“yyyyMMdd HH:mm:ss:fff”

这给了我


1/2/2020 7:00:12 AM+00:00

哇,我似乎在dd和HH之间添加了2个空格,与您的演员阵容相比,现在工作正常,感谢fff没有工作nether@Zwan我很乐意帮忙!是的,主要问题是,由于我的格式错误,我被迫使用allowWhiteSpace
DateTimeOffset.ParseExact("20200102 07:00:12:342", "yyyyMMdd HH:mm:ss:fff", CultureInfo.InvariantCulture,  DateTimeStyles.AssumeUniversal)
    DateTimeOffset utcTime1 = DateTimeOffset.ParseExact("20200102 07:00:12:342", "yyyyMMdd HH:mm:ss:fff", CultureInfo.InvariantCulture,  DateTimeStyles.AssumeUniversal);
    Console.WriteLine(utcTime1);