我有一个场景,需要将UTC日期转换为带有特定时区的ISO 8601字符串,以通过Web API发送。推荐的方法是使用TimeZoneInfo进行如下操作:
var configuredTimeZone = TimeZoneInfo.FindSystemTimeZoneById(timeZoneString);
var localTime = DateTime.SpecifyKind(TimeZoneInfo.ConvertTimeFromUtc(utcTime, configuredTimeZone), DateTimeKind.Local);
var stringResult = localTime.ToString("o");
这在我的本地机器上很好用,但是当代码托管到 Azure Web 应用程序时,我遇到了一个非常奇怪的情况,即 ToString 输出的字符串与本地不同。本地输出的是 2017-02-20T00:00:00-06:00(这正是我想要的,因为它包含我需要的时区信息),但是在 Azure 中托管时,我得到的是 2017-02-20T00:00:00+00:00(这是 UTC,不是我想要的)。由于我正在手动应用所需的时区,因此我不确定为什么格式会附加错误的时区信息。是否有人遇到过类似的问题?
DateTime
无法存储时区。 - SLaks