首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DateTimeOffset ParseExact

DateTimeOffset ParseExact
EN

Stack Overflow用户
提问于 2020-06-07 12:49:35
回答 2查看 682关注 0票数 0

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

代码语言:javascript
复制
 20200102 07:00:12:342

在我的方法中,我像这样ParseExact他们。

代码语言:javascript
复制
   DateTimeOffset utcTime1 = DateTimeOffset.ParseExact(csv[0].Trim(), "yyyyMMdd  HH:mm:ss:fff", CultureInfo.InvariantCulture,  DateTimeStyles.AllowWhiteSpaces);

但是结果不是utc,而是我的线程时间。

代码语言:javascript
复制
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

所以我试了一下:

代码语言:javascript
复制
 DateTimeOffset utcTime1 = DateTimeOffset.ParseExact(csv[0].Trim(), "yyyyMMdd  HH:mm:ss:zzz", CultureInfo.InvariantCulture,  DateTimeStyles.AssumeUniversal);

但是它抛出一个错误,无效的日期时间?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-07 12:55:40

在第二个字符串中,您提供了错误的格式字符串数毫秒(zzz,与UTC相抵)。文档

"fff“在日期和时间值中的毫秒。

代码语言:javascript
复制
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

票数 1
EN

Stack Overflow用户

发布于 2020-06-07 13:07:52

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

zzz表示与UTC相抵的小时和分钟。

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

因此,正确的格式应该是"yyyyMMdd HH:mm:ss:fff"

代码语言:javascript
复制
    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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62245571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档