/// <summary> /// Move the current timezone depending on the direction /// left : move backward, decrease GMT offset /// right : move forward, increase GMT offset /// </summary> /// <param name="direction">Direction</param> public static void MoveCurrentTimezone(Direction direction) { int current = TimezoneUtility.GetCurrentTimezoneNo(); if (direction == Direction.LEFT) { if (current == 0) { TimezoneUtility.SetCurrentTimezone(TimezoneUtility.timezone_.Length - 1); } else { TimezoneUtility.SetCurrentTimezone(current - 1); } } else { if (current == TimezoneUtility.timezone_.Length - 1) { TimezoneUtility.SetCurrentTimezone(0); } else { TimezoneUtility.SetCurrentTimezone(current + 1); } } }
/// <summary> /// Get Timezone information related to the given GMT offset /// </summary> /// <param name="offset">int</param> /// <returns>TimezoneInfo</returns> private static TimezoneInfo GetTimezoneInformation(int offset) { TimezoneInfo info; int localTimezoneOffset = TimezoneUtility.GetLocalTimeGmtOffset(); int offset_integer = (Math.Abs(offset - localTimezoneOffset)) / 60; int offset_remainder = (Math.Abs(offset - localTimezoneOffset)) % 60; DateTime dateNow = DateTime.Now; if (offset < localTimezoneOffset) { if (offset_remainder > 0) { info.relative = String.Format("{0}h {1}m behind", offset_integer, offset_remainder); info.newTime = dateNow.Add(new TimeSpan(-(offset_integer), -(offset_remainder), 0)); } else { info.relative = String.Format("{0}h behind", offset_integer); info.newTime = dateNow.Add(new TimeSpan(-(offset_integer), 0, 0)); } } else if (offset > localTimezoneOffset) { if (offset_remainder > 0) { info.relative = String.Format("{0}h {1}m ahead", offset_integer, offset_remainder); info.newTime = dateNow.Add(new TimeSpan(offset_integer, offset_remainder, 0)); } else { info.relative = String.Format("{0}h ahead", offset_integer); info.newTime = dateNow.Add(new TimeSpan(offset_integer, 0, 0)); } } else { info.relative = "Same as local time"; info.newTime = dateNow; } return(info); }