0

也许这听起来有点奇怪,但我实际上知道这个问题的解决方案。我最初的解决方案没有用,我真的想知道为什么。它是一个 Asp.Net MVC 应用程序。

这没有用:

        public static DateTime ConvertToUTC(String userTimeZone, DateTime date)
    {
        var result = TimeZoneInfo.ConvertTimeToUtc(date, TimeZoneInfo.FindSystemTimeZoneById(userTimeZone));

        return result;
    }

    public static DateTime ConvertToUserTime(string userTimeZone, DateTime date)
    {
        var result = TimeZoneInfo.ConvertTimeFromUtc(date, TimeZoneInfo.FindSystemTimeZoneById(userTimeZone));

        return result;
    }

我无法将时间转换回原来的时间。

这确实有效:

public DateTime ConvertToUTC(String userTimeZone, DateTime date)
    {

        var result = TimeZoneInfo.ConvertTimeToUtc(result, TimeZoneInfo.FindSystemTimeZoneById(userTimeZone));

        return result;
    }

    public DateTime ConvertToUserTime(string userTimeZone, DateTime date)
    {
        var userTimezoneInfo = TimeZoneInfo.FindSystemTimeZoneById(userTimeZone);
        var result = date.Add(userTimezoneInfo.BaseUtcOffset);

        return result;
    }

有人有想法吗?

4

1 回答 1

0

For this problem a special DataType is introduced in .NET 3.5: DateTimeOffset it is functionally similar to DateTime but it stores also a UTC offset.

于 2013-01-12T22:02:27.183 回答