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)); }
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); }
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); }
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)); }
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); }