C# 将日期时间转换为UTC并返回

C# 将日期时间转换为UTC并返回,c#,asp.net-mvc,C#,Asp.net Mvc,也许听起来有点奇怪,但我确实知道这个问题的解决方案。我最初的解决方案不起作用,我想知道为什么。它是一个Asp.NETMVC应用程序 这不起作用: public static DateTime ConvertToUTC(String userTimeZone, DateTime date) { var result = TimeZoneInfo.ConvertTimeToUtc(date, TimeZoneInfo.FindSystemTimeZoneByI

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

这不起作用:

        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;
    }

有人有想法吗?

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

如果不知道所涉及的时区、输入、预期输出或失败时的实际输出,很难知道发生了什么问题。我建议用我的野田佳彦时间计划来代替,请注意:)