Пример #1
0
        public void SubtractDuration_MethodEquivalents()
        {
            ZonedDateTime after = SampleZone.AtStrictly(new LocalDateTime(2011, 6, 13, 16, 0));

            Assert.AreEqual(after - Duration.OneDay, ZonedDateTime.Subtract(after, Duration.OneDay));
            Assert.AreEqual(after - Duration.OneDay, after.Minus(Duration.OneDay));
        }
Пример #2
0
        public void SubtractZonedDateTime()
        {
            var           zone    = DateTimeZone.ForOffset(Offset.FromHours(-5));
            ZonedDateTime subject = new ZonedDateTime(Instant.FromUtc(2017, 7, 17, 7, 17), zone);
            ZonedDateTime other   = new ZonedDateTime(Instant.FromUtc(2017, 7, 17, 9, 17), zone);

            var difference = Snippet.For(ZonedDateTime.Subtract(other, subject));

            Assert.AreEqual(Duration.FromHours(2), difference);
        }
        public static double HourDifference(this DateTimeOffset start, DateTimeOffset end, string timezone)
        {
            var locationTimeZone = DateTimeZoneProviders.Tzdb[timezone];
            var instantStart     = Instant.FromDateTimeOffset(start);
            var instantEnd       = Instant.FromDateTimeOffset(end);
            var zonedStart       = instantStart.InZone(locationTimeZone);
            var zonedEnd         = instantEnd.InZone(locationTimeZone);
            var duration         = ZonedDateTime.Subtract(zonedEnd, zonedStart);

            return(duration.TotalHours);
        }
Пример #4
0
        public void Subtract_AroundTimeZoneTransition()
        {
            // After the transition at 4pm...
            ZonedDateTime after = SampleZone.AtStrictly(new LocalDateTime(2011, 6, 13, 16, 0));
            // 24 hours earlier, and it's 3pm
            ZonedDateTime beforeExpected = SampleZone.AtStrictly(new LocalDateTime(2011, 6, 12, 15, 0));
            ZonedDateTime beforeSubtract = ZonedDateTime.Subtract(after, Duration.OneDay);
            ZonedDateTime beforeOperator = after - Duration.OneDay;

            Assert.AreEqual(beforeExpected, beforeSubtract);
            Assert.AreEqual(beforeExpected, beforeOperator);
        }
Пример #5
0
        public void Subtraction_ZonedDateTime()
        {
            // Test all three approaches... not bothering to check a different calendar,
            // but we'll use two different time zones.
            ZonedDateTime start = new LocalDateTime(2014, 08, 14, 5, 51).InUtc();
            // Sample zone is UTC+4 at this point, so this is 14:00Z.
            ZonedDateTime end      = SampleZone.AtStrictly(new LocalDateTime(2014, 08, 14, 18, 0));
            Duration      expected = Duration.FromHours(8) + Duration.FromMinutes(9);

            Assert.AreEqual(expected, end - start);
            Assert.AreEqual(expected, end.Minus(start));
            Assert.AreEqual(expected, ZonedDateTime.Subtract(end, start));
        }
Пример #6
0
        public void SubtractDuration()
        {
            // Europe/Dublin transitions from UTC+1 to UTC+0 at 2am (local) on 2017-10-29
            var          dt     = new LocalDateTime(2017, 10, 29, 1, 45, 0);
            DateTimeZone dublin = DateTimeZoneProviders.Tzdb["Europe/Dublin"];

            ZonedDateTime afterTransition = new ZonedDateTime(dt, dublin, Offset.FromHours(0));

            var result = Snippet.For(ZonedDateTime.Subtract(afterTransition, Duration.FromHours(1)));

            Assert.AreEqual(new LocalDate(2017, 10, 29), result.Date);
            // Adding an hour of elapsed time takes us across the DST transition, so we have
            // the same local time (shown on a clock) but a different offset.
            Assert.AreEqual(new ZonedDateTime(dt, dublin, Offset.FromHours(1)), result);

            // The + operator and Plus instance method are equivalent to the Add static method.
            var result2 = Snippet.For(afterTransition - Duration.FromHours(1));
            var result3 = Snippet.For(afterTransition.Minus(Duration.FromHours(1)));

            Assert.AreEqual(result, result2);
            Assert.AreEqual(result, result3);
        }