Пример #1
0
        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);
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        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;
        }
Пример #4
0
        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");
        }
Пример #5
0
        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);
        }