如何将用户发布的推文时间转换为本地时间?created_at 给了我创建推文的时间,并且基于用户的国家,我如何使用 c# 将其更改为我的本地时间。时间格式为“Fri Jul 27 15:14:11 +0000 2012”。utc_offset 是什么意思,如何使用它来更改时区?
我对时区的东西不是很熟悉,谢谢你的帮助:)
你会想要使用DateTimeOffset
结构。这允许您捕获日期和时间以及与 UTC 的偏移量。
您要用于 Twitter 时间的格式是:
string twitterDate = "Fri Jul 27 15:14:11 +0000 2012";
DateTimeOffset dt = DateTimeOffset.ParseExact(twitterDate,
"ddd MMM dd HH:mm:ss zzz yyyy", CultureInfo.InvariantCulture);
请注意,虽然没有记录,zzzz
但确实可以作为自定义日期时间格式并成功地正确解析偏移量。这意味着您将来在依赖它时应该小心(除非文档更改以反映此功能)。
一旦有了DateTimeOffset
,您就知道与 UTC 的偏移量。如果您想在本地时间获取它,您可以调用已解析的ToLocalTime
方法,DateTimeOffset
它将返回一个实例,该实例具有基于您本地设置的偏移量。
应该是这样的:
DateTime localDateTime = DateTime.ParseExact(dateString, "ddd MMM dd HH:mm:ss zzz yyyy", new CultureInfo("en-US"));
除非您在 DateTime 的构造函数中提供 DateTimeKind,否则 DateTime 将位于工作站/服务器管理员为 Windows 选择的时区中。