protected DateTime ToLocalTime(DateTime utc) { if (utc.Kind == DateTimeKind.Local) { return(utc); } var local = utc.AddSeconds(_systemTimeZone.SecondsFromGMT(utc.ToNSDate())).WithKind(DateTimeKind.Local); return(local); }
/// <summary> /// Converts the UTCT o local time zone. /// </summary> /// <returns>The UTCT o local time zone.</returns> /// <param name="dateTimeUtc">Date time UTC.</param> public DateTime ConvertUtcToLocalTimeZone(DateTime dateTimeUtc) { var sourceTimeZone = new NSTimeZone("UTC"); var destinationTimeZone = NSTimeZone.LocalTimeZone; var sourceDate = DateUtility.DateTimeToNativeDate(dateTimeUtc); var sourceGmtOffset = (int)sourceTimeZone.SecondsFromGMT(sourceDate); var destinationGmtOffset = (int)destinationTimeZone.SecondsFromGMT(sourceDate); var interval = destinationGmtOffset - sourceGmtOffset; var destinationDate = sourceDate.AddSeconds(interval); var dateTime = DateUtility.NativeDateToDateTime(destinationDate); return(dateTime); }
private static DateTime NSDateToDateTime(MonoTouch.Foundation.NSDate sourceDate) { NSTimeZone sourceTimeZone = new NSTimeZone("UTC"); NSTimeZone destinationTimeZone = NSTimeZone.LocalTimeZone; int sourceGMTOffset = sourceTimeZone.SecondsFromGMT(sourceDate); int destinationGMTOffset = destinationTimeZone.SecondsFromGMT(sourceDate); int interval = destinationGMTOffset - sourceGMTOffset; var destinationDate = sourceDate.AddSeconds(interval); var dateTime = new DateTime(2001, 1, 1, 0, 0, 0).AddSeconds(destinationDate.SecondsSinceReferenceDate); return dateTime; }
public void TestComponentsInTimeZone() { RequiresIos8(); NSTimeZone currentZone = NSTimeZone.LocalTimeZone; NSTimeZone otherZone = new NSTimeZone("Asia/Bangkok"); if (currentZone.SecondsFromGMT(NSDate.Now) == otherZone.SecondsFromGMT(NSDate.Now)) { Assert.Inconclusive("Same time zone, change Asia/Bangkok"); } NSDateComponents components = NSCalendar.CurrentCalendar.ComponentsInTimeZone(otherZone, NSDate.Now); Assert.IsTrue(components.Hour != NSCalendar.CurrentCalendar.Components(NSCalendarUnit.Hour, NSDate.Now).Hour, "Different time zones should have different hours"); }
public DateTime ConvertUTCToLocalTimeZone(DateTime dateTimeUtc) { NSTimeZone sourceTimeZone = new NSTimeZone("UTC"); NSTimeZone destinationTimeZone = NSTimeZone.LocalTimeZone; NSDate sourceDate = DateTimeToNativeDate(dateTimeUtc); int sourceGMTOffset = (int)sourceTimeZone.SecondsFromGMT(sourceDate); int destinationGMTOffset = (int)destinationTimeZone.SecondsFromGMT(sourceDate); int interval = sourceGMTOffset - destinationGMTOffset; var destinationDate = dateTimeUtc.AddSeconds(interval); //var destinationDate = sourceDate.AddSeconds(interval); //var dateTime = NativeDateToDateTime(destinationDate); return(destinationDate); }