0

DateTime を UTC から別のタイムゾーンに変換するために、このメソッドを作成しました

public static DateTime GetDateTimeFromUtcTo(string timeZoneName, DateTime time)
{
    DateTime newDateTime = DateTime.SpecifyKind(time, DateTimeKind.Unspecified);

    TimeZoneInfo newTzi = TimeZoneInfo.FindSystemTimeZoneById(timeZoneName);

    bool isDaylight = newTzi.IsDaylightSavingTime(time);

    TimeZoneInfo gmtTzi = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
    if (!gmtTzi.Equals(newTzi))
    {
        newDateTime = TimeZoneInfo.ConvertTime(newDateTime, gmtTzi, newTzi);
    }

    if (isDaylight)
    {
        newDateTime = newDateTime.AddHours(1);
    }

    return newDateTime;
}

timeZoneName= "E. South America Standard Time" (--03:00 GMT) and time= "16/05/2013 20:00:00" (UTC time) の場合、このメソッドは正しく機能しません。

正しい日時は「16/05/2013 17:00:00」でなければなりませんが、「16/05/2013 16:00:00」となります。なんで?

4

1 に答える 1