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

この問題のために、特別な DataType が .NET 3.5 で導入されました: DateTimeOffset機能的には DateTime に似ています、UTC オフセットも格納します。

于 2013-01-12T22:02:27.183 に答える