如何将用户发推的时间转换为本地时间?created_at给了我创建推特的时间,它基于用户的国家/地区,我如何使用c#将其更改为我的本地时间。时间格式为"2012年7月27日星期五15:14:11+00000"。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的偏移量。如果您想在您的本地时间中获取它,您可以在解析的DateTimeOffset
上调用ToLocalTime
方法,它将返回一个具有基于本地设置的偏移量的实例。
这应该是:
DateTime localDateTime = DateTime.ParseExact(dateString, "ddd MMM dd HH:mm:ss zzz yyyy", new CultureInfo("en-US"));
除非在DateTime的构造函数中给定DateTimeKind,否则DateTime将位于工作站/服务器管理员为Windows选择的时区中。