带时区的日期时间字符串
我有一个以世界时 (UTC) 存储的日期时间,其值为 2010-01-01 01:01:01。
我想以 EST 格式显示它 2010-01-01 04:01:01GMT-04:00,但是时区的“K”格式化程序在 ToString 中不起作用
I have a DateTime stored in universal time (UTC) of value 2010-01-01 01:01:01.
I would like to display it in EST in this format 2010-01-01 04:01:01GMT-04:00, however the 'K' formatter for timezone doesn't work in ToString
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
使用“zzz”格式说明符获取 UTC 偏移量。例如:
输出:
2009-12-31 19:01:01 GMT-06:00
我在 CDT 时区。确保 DateTime 明确是 DateTimeKind.Utc。
Use the "zzz" format specifier to get the UTC offset. For example:
Output:
2009-12-31 19:01:01 GMT-06:00
I'm in the CDT timezone. Make sure the DateTime is unambiguously DateTimeKind.Utc.
如果像我一样,您碰巧需要像
2018-03-31T01:23:45.678-0300
这样的格式(时区部分没有冒号),您可以使用:If like myself you happen to need a format like
2018-03-31T01:23:45.678-0300
(no colon in the timezone part), you can use this:此方法将返回东部标准时间的指定时间(按照问题要求),即使 EST 不是本地时区:
注意:我尚未在非英语操作系统中对此进行测试。请参阅 TimeZoneInfo.FindSystemTimeZoneById 上的 MSDN 文档。
This method will return the specified time in Eastern Standard Time (as the question requested), even if EST is not the local time zone:
Note: I haven't tested this in a non-English OS. See the MSDN documentation on TimeZoneInfo.FindSystemTimeZoneById.
像这样的东西有效。你可能可以再清理一下:
Something like this works. You could probably clean it up a bit more:
我认为您正在寻找
TimeZoneInfo
类(请参阅http://msdn.microsoft.com/en-us/library/system.timezoneinfo_members.aspx)。它有许多静态方法来在时区之间转换日期。I think you are looking for the
TimeZoneInfo
class (see http://msdn.microsoft.com/en-us/library/system.timezoneinfo_members.aspx). It has many static methods to convert dates between time zones.如果您使用“zzz”格式说明符为您提供相对于 UTC 的本地时区偏移量,但如果您想要获得相对于 UTC 的特定时区偏移量,则应使用
ToOffset
方法。在此处查看更多信息
例如
,在上面的示例中,第一行的输出可能会通过更改 Local TimeZone 设置而改变,但接下来两行的输出始终相同,并且基于特定的给定时区。
If you use the "zzz" format specifier give you the local time zone offset from UTC, but if you want have the specific time zone offset from UTC you should using
ToOffset
method.see more here
For example
In the example above, the output of the first line may change by changing the Local TimeZone setting, but the output of the next two lines is always the same and based on the specific given time zone.