将TimeZone应用于特定日期?

时间:2017-11-10 00:18:29

标签: c# datetime timezone timezone-offset

例如,服务器时间是晚上11点。 在应用内指定的用户时区为US Mountain Standard Time

所以我需要下午4点,用户时间。

尝试

var UserTimeZoneInfo = "US Mountain Standard Time";
var userTime  =TimeZoneInfo.ConvertTimeToUtc(now, _UserTimeZoneInfo);

和这个

var userTime  = new DateTimeOffset(now, this._UserTimeZoneInfo.BaseUtcOffset);

但在这两种情况下,我都是早上8点而不是下午4点。 TimeZone差异被添加到服务器时间,而不是减去。我看到还有其他DateTime函数,但不确定使用哪一个?

2 个答案:

答案 0 :(得分:0)

如果您希望从UTC更改指定的时区时间,则需要使用ConvertTimeFromUtc方法。

var timeZone = TimeZoneInfo.FindSystemTimeZoneById("US Mountain Standard Time");
DateTime arizonaTime = TimeZoneInfo.ConvertTimeFromUtc(new DateTime(2017, 11, 9, 23, 0, 0,DateTimeKind.Utc), timeZone);

DotNetFiddle

答案 1 :(得分:0)

您可以使用ConvertTime将时间转换为特定时区的时间。

     DateTime currentDt = DateTime.Now;
     var timeZone = TimeZoneInfo.FindSystemTimeZoneById("US Mountain Standard Time");
     var userTime  = TimeZoneInfo.ConvertTime(currentDt, timeZone);