datetime to string with time zone
我有一个DateTime以通用时间(UTC)存储,值为2010-01-01 01:01:01。
我想以这种格式在美国东部时间2010-01-01 04:01:01GMT-04:00中显示它,但是时区的'K'格式化器在ToString中不起作用
使用"zzz"格式说明符获取UTC偏移量。 例如:
1 2 3 | var dt = new DateTime(2010, 1, 1, 1, 1, 1, DateTimeKind.Utc); string s = dt.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss "GMT"zzz"); Console.WriteLine(s); |
输出:
2009-12-31 19:01:01 GMT-06:00
我在CDT时区。 确保DateTime是明确的DateTimeKind.Utc。
如果像我一样你碰巧需要像
1 | datetime.ToString("yyyy-MM-ddTHH:mm:ss.fffzzz").Remove(26,1) |
像这样的东西有效。 你可以把它清理一下:
1 | string newDate = string.Format("{0:yyyy-MM-dd HH:mm:ss} GMT {1}", dt.ToLocalTime(), dt.ToLocalTime().ToString("%K")); |
即使EST不是本地时区,此方法也会在东部标准时间(如请求的问题)返回指定时间:
1 2 3 4 5 6 | public string GetTimeInEasternStandardTime(DateTime time) { TimeZoneInfo easternStandardTime = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"); DateTimeOffset timeInEST = TimeZoneInfo.ConvertTime(time, easternStandardTime); return timeInEST.ToString("yyyy-MM-dd hh:mm:ss tt" GMT"zzz"); } |
注意:我没有在非英语操作系统中测试过这个。 请参阅有关TimeZoneInfo.FindSystemTimeZoneById的MSDN文档。
我认为您正在寻找