예제 #1
0
        public void Add_MethodEquivalents()
        {
            const int  minutes      = 23;
            const int  hours        = 3;
            const int  milliseconds = 40000;
            const long seconds      = 321;
            const long nanoseconds  = 12345;
            const long ticks        = 5432112345;

            ZonedDateTime before = SampleZone.AtStrictly(new LocalDateTime(2011, 6, 12, 15, 0));

            Assert.AreEqual(before + Duration.OneDay, ZonedDateTime.Add(before, Duration.OneDay));
            Assert.AreEqual(before + Duration.OneDay, before.Plus(Duration.OneDay));

            Assert.AreEqual(before + Duration.FromHours(hours), before.PlusHours(hours));
            Assert.AreEqual(before + Duration.FromHours(-hours), before.PlusHours(-hours));

            Assert.AreEqual(before + Duration.FromMinutes(minutes), before.PlusMinutes(minutes));
            Assert.AreEqual(before + Duration.FromMinutes(-minutes), before.PlusMinutes(-minutes));

            Assert.AreEqual(before + Duration.FromSeconds(seconds), before.PlusSeconds(seconds));
            Assert.AreEqual(before + Duration.FromSeconds(-seconds), before.PlusSeconds(-seconds));

            Assert.AreEqual(before + Duration.FromMilliseconds(milliseconds), before.PlusMilliseconds(milliseconds));
            Assert.AreEqual(before + Duration.FromMilliseconds(-milliseconds), before.PlusMilliseconds(-milliseconds));

            Assert.AreEqual(before + Duration.FromTicks(ticks), before.PlusTicks(ticks));
            Assert.AreEqual(before + Duration.FromTicks(-ticks), before.PlusTicks(-ticks));

            Assert.AreEqual(before + Duration.FromNanoseconds(nanoseconds), before.PlusNanoseconds(nanoseconds));
            Assert.AreEqual(before + Duration.FromNanoseconds(-nanoseconds), before.PlusNanoseconds(-nanoseconds));
        }
예제 #2
0
        private static ZonedDateTime CorrectDaylightSavingTime(LocalTime minTime, ZonedDateTime zoned)
        {
            var diffHour = minTime.Hour - zoned.Hour;
            var diffMin  = minTime.Minute - zoned.Minute;
            var diffSec  = minTime.Second - zoned.Second;

            return(zoned
                   .PlusHours(diffHour)
                   .PlusMinutes(diffMin)
                   .PlusSeconds(diffSec));
        }
예제 #3
0
        public void PlusHours()
        {
            DateTimeZone dublin = DateTimeZoneProviders.Tzdb["Europe/Dublin"];
            var          start  = Instant.FromUtc(2017, 7, 20, 5, 30);
            // Dublin is at UTC+1 in July 2017, so this is 6:30am.
            ZonedDateTime zoned   = new ZonedDateTime(start, dublin);
            var           pattern = ZonedDateTimePattern.ExtendedFormatOnlyIso;

            Assert.AreEqual("2017-07-20T07:30:00 Europe/Dublin (+01)",
                            pattern.Format(Snippet.For(zoned.PlusHours(1))));
        }
        private async Task <List <SensorDataTableEntity> > GetTemperatureDataForDate(ZonedDateTime zonedDateTime)
        {
            var dateTimeZone  = zonedDateTime.Zone;
            var startDateTime = zonedDateTime.ToDateTimeUtc();
            var endDateTime   = zonedDateTime.PlusHours(24).ToDateTimeUtc();

            var requestStartTick = startDateTime.ToTicks();
            var requestEndTick   = endDateTime.ToTicks();

            var operation = new TableQuery <SensorDataTableEntity>()
                            .Where(TableQuery.CombineFilters(
                                       TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, AppSettings.StoragePartitionKey),
                                       TableOperators.And,
                                       TableQuery.CombineFilters(
                                           TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.GreaterThanOrEqual, requestStartTick),
                                           TableOperators.And,
                                           TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.LessThan, requestEndTick))));

            return((await _table.ExecuteQuerySegmentedAsync(operation, null)).ToList());
        }
예제 #5
0
        public async Task <List <TemperatureEntity> > GetTemperatureEntitiesForDate(string location, ZonedDateTime zonedDateTime)
        {
            var dateTimeZone         = zonedDateTime.Zone;
            var requestStartDateTime = zonedDateTime.ToDateTimeUtc();
            var requestEndDateTime   = zonedDateTime.PlusHours(24).ToDateTimeUtc();

            var requestStartReverseTick = requestStartDateTime.ToReverseTicks();
            var requestEndReverseTick   = requestEndDateTime.ToReverseTicks();

            //The nature of ReverseTicks is that the start time is greater than the end time.
            var operation = new TableQuery <TemperatureEntity>()
                            .Where(TableQuery.CombineFilters(
                                       TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, location),
                                       TableOperators.And,
                                       TableQuery.CombineFilters(
                                           TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.LessThanOrEqual, requestStartReverseTick),
                                           TableOperators.And,
                                           TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.GreaterThan, requestEndReverseTick))));

            return((await _table.ExecuteQuerySegmentedAsync(operation, null)).ToList());
        }