我有一个DateTime以通用时间(UTC)存储,值为2010-01-01 01:01:01.
我想以这种格式在美国东部时间2010-01-01 04:01:01GMT-04:00中显示它,但是时区的'K'格式化程序在ToString中不起作用
Han*_*ant 64
使用"zzz"格式说明符获取UTC偏移量.例如:
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);
Run Code Online (Sandbox Code Playgroud)
输出:2009-12-31 19:01:01 GMT-06:00
我在CDT时区.确保DateTime是明确的DateTimeKind.Utc.
如果像我一样碰巧需要这样的格式2018-03-31T01:23:45.678-0300
(在时区部分没有冒号),则可以使用以下格式:
datetime.ToString("yyyy-MM-ddTHH:mm:ss.fffzzz").Remove(26,1)
Run Code Online (Sandbox Code Playgroud)
像这样的作品。您可能可以多清理一点:
string newDate = string.Format("{0:yyyy-MM-dd HH:mm:ss} GMT {1}", dt.ToLocalTime(), dt.ToLocalTime().ToString("%K"));
Run Code Online (Sandbox Code Playgroud)
即使EST不是本地时区,此方法也将返回东部标准时间中的指定时间(根据要求的问题):
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");
}
Run Code Online (Sandbox Code Playgroud)
注意:我尚未在非英语操作系统中对此进行测试。请参阅有关TimeZoneInfo.FindSystemTimeZoneById的MSDN文档。
归档时间: |
|
查看次数: |
71775 次 |
最近记录: |