将DateTime转换为UTC并返回

时间:2013-01-12 19:12:04

标签: c# asp.net-mvc

也许这听起来有点奇怪,但我确实知道这个问题的解决方案。我最初的解决方案不起作用,我实际上想要为什么。它是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;
    }

有人有想法吗?

1 个答案:

答案 0 :(得分:0)

对于这个问题,在.NET 3.5中引入了一个特殊的DataType:DateTimeOffset它在功能上与DateTime类似,但它也存储了UTC偏移量。