public void TestOffset() { var testScheduler = new TestScheduler(); var recorder = testScheduler.CreateObserver<int>(); var notifier = new ScheduledNotifier<int>(testScheduler); notifier.Subscribe(recorder); var origin = new DateTimeOffset(1999, 1, 1, 1, 1, 1, TimeSpan.Zero); notifier.Report(1); notifier.Report(2); notifier.Report(3, origin); notifier.Report(4, origin.AddDays(10)); notifier.Report(5, origin.AddYears(1)); notifier.Report(6); testScheduler.Start(); recorder.Messages.Is( OnNext(1, 1), OnNext(1, 2), OnNext(1, 6), OnNext(origin.Ticks, 3), OnNext(origin.AddDays(10).Ticks, 4), OnNext(origin.AddYears(1).Ticks, 5)); }
public void IndexDecider_EndsUpInTheOutput() { //DO NOTE that you cant send objects as scalar values through Logger.*("{Scalar}", {}); var timestamp = new DateTimeOffset(2013, 05, 28, 22, 10, 20, 666, TimeSpan.FromHours(10)); const string messageTemplate = "{Song}++ @{Complex}"; var template = new MessageTemplateParser().Parse(messageTemplate); _options.IndexDecider = (l, utcTime) => string.Format("logstash-{1}-{0:yyyy.MM.dd}", utcTime, l.Level.ToString().ToLowerInvariant()); using (var sink = new ElasticsearchSink(_options)) { var properties = new List<LogEventProperty> { new LogEventProperty("Song", new ScalarValue("New Macabre")) }; var e = new LogEvent(timestamp, LogEventLevel.Information, null, template, properties); sink.Emit(e); var exception = new ArgumentException("parameter"); properties = new List<LogEventProperty> { new LogEventProperty("Song", new ScalarValue("Old Macabre")), new LogEventProperty("Complex", new ScalarValue(new { A = 1, B = 2})) }; e = new LogEvent(timestamp.AddYears(-2), LogEventLevel.Fatal, exception, template, properties); sink.Emit(e); } _seenHttpPosts.Should().NotBeEmpty().And.HaveCount(1); var json = _seenHttpPosts.First(); var bulkJsonPieces = json.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries); bulkJsonPieces.Should().HaveCount(4); bulkJsonPieces[0].Should().Contain(@"""_index"":""logstash-information-2013.05.28"); bulkJsonPieces[1].Should().Contain("New Macabre"); bulkJsonPieces[2].Should().Contain(@"""_index"":""logstash-fatal-2011.05.28"); bulkJsonPieces[3].Should().Contain("Old Macabre"); //serilog by default simpy .ToString()'s unknown objects bulkJsonPieces[3].Should().Contain("Complex\":\"{"); }
public void CanAddYearsAcrossDstTransition() { var tz = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"); var dto = new DateTimeOffset(2014, 3, 9, 0, 0, 0, TimeSpan.FromHours(-8)); var result = dto.AddYears(1, tz); var expected = new DateTimeOffset(2015, 3, 9, 0, 0, 0, TimeSpan.FromHours(-7)); Assert.Equal(expected, result); Assert.Equal(expected.Offset, result.Offset); }
public static int GetCurrentAge(this DateTimeOffset timeOffset) { int age = DateTime.UtcNow.Year - timeOffset.Year; if (DateTime.UtcNow < timeOffset.AddYears(age)) { age--; } return(age); }
public static int ToElapsedYears(this DateTimeOffset date, DateTimeOffset endDate) { int years = endDate.Year - date.Year; if (date > endDate.AddYears(-years)) { years--; } return(years); }
public override ReportsDateRangeParameter GetDateRange() { var lastYear = TimeService.CurrentDateTime.Year - 1; var start = new DateTimeOffset(lastYear, 1, 1, 0, 0, 0, TimeSpan.Zero); var end = start.AddYears(1).AddDays(-1); return(ReportsDateRangeParameter .WithDates(start, end) .WithSource(ReportsSource.ShortcutLastYear)); }
public static int GetCurrentAge(this DateTimeOffset dateTimeOffset, DateTimeOffset referenceDate) { int age = referenceDate.Year - dateTimeOffset.Year; if (referenceDate < dateTimeOffset.AddYears(age)) { age--; } return(age); }
public void ThrowsWhenTheIntervalIsGreaterThanOneYear() { var now = new DateTimeOffset(2017, 1, 27, 11, 22, 33, TimeSpan.Zero); var from = now.AddYears(-1).AddDays(-2); var to = now.AddDays(-1); Action callingClient = () => client.GetByWorkspace(123, from, to).Wait(); callingClient.Should().Throw <ArgumentOutOfRangeException>(); }
private static (DateTimeOffset first, DateTimeOffset last) GetYearDates(this QParaOptions options, int year) { // the assumption here is that year is the Qpara definition of year, ie. 2017 for dates from 1Oct2017 to 30Sep2018 string monthName = options.FirstMonthOfYear;//.ToLower(); var monthNumber = Array.IndexOf(months, monthName) + 1; var fdy = new DateTimeOffset(year, monthNumber, 1, 0, 0, 0, TimeSpan.Zero); var ldy = fdy.AddYears(1).AddDays(-1); return(fdy.StripTimeAndZone(), ldy.StripTimeAndZone()); }
private int GetWeekNumber(DateTimeOffset date) { var diff = date - GetFirstDayWeekDay(date); if (diff < TimeSpan.Zero) { diff = date - GetFirstDayWeekDay(date.AddYears(-1)); } return((diff.Days / 7) + 1); }
public static int GetCurrentAge(this DateTimeOffset dateOfBirth) { var currentYear = DateTime.UtcNow; int age = currentYear.Year - dateOfBirth.Year; if (currentYear < dateOfBirth.AddYears(age)) { age--; } return(age); }
public static int CalculateAge(this DateTimeOffset dateOfBirth) { var age = DateTime.Today.Year - dateOfBirth.Year; if (dateOfBirth.AddYears(age) > DateTime.Today) { age--; } return(age); }
public void Convert_EpochMilliseconds_ToBase63() { var startOfEpoch = new DateTimeOffset(1970, 1, 1, 0, 0, 0, new TimeSpan(0)); var oneMillisecondFromEpoch = startOfEpoch.ToUnixTimeMilliseconds() + 1; var fiveYearsFromEpoch = startOfEpoch.AddYears(5).ToUnixTimeMilliseconds(); OpaqueEncoding encoding = new OpaqueEncoding(CharacterSet.Base36); Assert.AreEqual("1", encoding.Convert(oneMillisecondFromEpoch)); Assert.AreEqual("20H61HC0", encoding.Convert(fiveYearsFromEpoch)); }
public IEnumerable <int> GetSelectedRecordsPerYear(int sensorId) { DateTimeOffset endDate = DateTimeOffset.Now; DateTimeOffset startDate = endDate.AddYears(-1); var x = from t in Get() where t.SensorId == sensorId && t.Date >= startDate && t.Date <= endDate select t.Data; return(x); }
public IEnumerable <DoorEvent> GetDoorEvents(int year, int skip, int take) { var dtStart = new DateTimeOffset(new DateTime(year, 1, 1)); var dtEnd = dtStart.AddYears(1).AddSeconds(-1); if (skip >= 0 && take > 0) { return(this._db.SelectBetweenSkipTake(dtStart, dtEnd, skip, take)); } return(this._db.SelectBetween(dtStart, dtEnd)); }
public void CanAddYearsAcrossDstTransition() { var tz = TimeZoneInfo.FindSystemTimeZoneById(TimeZoneId); var dto = new DateTimeOffset(2014, 3, 9, 0, 0, 0, TimeSpan.FromHours(-8)); var result = dto.AddYears(1, tz); var expected = new DateTimeOffset(2015, 3, 9, 0, 0, 0, TimeSpan.FromHours(-7)); Assert.Equal(expected, result); Assert.Equal(expected.Offset, result.Offset); }
public static int Age(this DateTimeOffset birthdate, DateTimeOffset?today = null) { today = today ?? DateTimeOffset.Now; int age = today.Value.Year - birthdate.Year; if (today < birthdate.AddYears(age)) { age--; } return(age); }
public static int GetCurrentAge(this DateTimeOffset dateTimeOffset) { var dateToCalculateTo = DateTime.UtcNow; var age = dateToCalculateTo.Year - dateTimeOffset.Year; if (dateToCalculateTo < dateTimeOffset.AddYears(age)) { age--; } return(age); }
public static int GetCurrentAge(this DateTimeOffset dateTimeOffset) { var now = DateTime.UtcNow; var age = now.Year - dateTimeOffset.Year; if (now < dateTimeOffset.AddYears(age)) { age--; } return(age); }
public static int YasHesapla(this DateTimeOffset tarih) { var suan = DateTime.UtcNow; int yas = suan.Year - tarih.Year; if (tarih.AddYears(yas) > suan) { yas--; } return(yas); }
public static int GetCurrentAge(this DateTimeOffset date, DateTimeOffset?dateOfDeath) { var dateToCalculate = dateOfDeath?.UtcDateTime ?? DateTime.Now; var age = dateToCalculate.Year - date.Year; if (dateToCalculate < date.AddYears(age)) { age--; } return(age); }
public static DateTimeOffset AdjustWithFutureTolerance(DateTimeOffset calendar) { var now = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); var then = calendar.ToUnixTimeMilliseconds(); if (then > now && then - now > FUTURE_TOLERANCE) { return(calendar.AddYears(-1)); } return(calendar); }
public static DateTimeOffset GetSelfExcusionEndDate(SelfExclusion selfEclusionType, DateTimeOffset startDate) { switch (selfEclusionType) { case SelfExclusion.Permanent: return(DateTimeOffset.MaxValue); case SelfExclusion._6months: return(startDate.AddMonths(6)); case SelfExclusion._1Year: return(startDate.AddYears(1)); case SelfExclusion._5Years: return(startDate.AddYears(5)); default: return(DateTimeOffset.MinValue); } }
public static int GetCurrentAge(this DateTimeOffset dateTimeOffset) { var currentDate = DateTime.UtcNow; int age = currentDate.Year - dateTimeOffset.Year; if (currentDate < dateTimeOffset.AddYears(age)) { age--; } return(age); }
private static void ShowLegalLicenseAge() { // <Snippet6> const int minimumAge = 16; DateTimeOffset dateToday = DateTimeOffset.Now; DateTimeOffset latestBirthday = dateToday.AddYears(-1 * minimumAge); Console.WriteLine("To possess a driver's license, you must have been born on or before {0:d}.", latestBirthday); // </Snippet6> }
public static int GetAge(this DateTimeOffset dateOfBirth) { var currentDate = DateTime.UtcNow; int age = currentDate.Year - dateOfBirth.Year; if (dateOfBirth.AddYears(age) > currentDate) { age--; } return(age); }
public static int GetCurrentAge(this DateTimeOffset dateTimeOffset, DateTimeOffset?dateOfDeath) { var dateToCalculateTo = dateOfDeath ?? DateTime.UtcNow; int age = dateToCalculateTo.Year - dateTimeOffset.Year; if (dateToCalculateTo < dateTimeOffset.AddYears(age)) { age--; } return(age); }
public static int CalculateAge(this DateTimeOffset dateTimeOffset) { var currentDate = DateTimeOffset.UtcNow; var age = currentDate.Year - dateTimeOffset.Year; if (currentDate < dateTimeOffset.AddYears(age)) { age -= 1; } return(age); }
public void DoesNotThrowWhenTheStartDateIsInThePastButThereIsNoEndDate() { var now = new DateTimeOffset(2017, 1, 27, 11, 22, 33, TimeSpan.Zero); var from = now.AddYears(-1).AddDays(-2); var response = emptyResponse(); apiClient.Send(Arg.Any <IRequest>()).Returns(response); Action callingClient = () => client.GetByWorkspace(123, from, null).Wait(); callingClient.Should().NotThrow(); }
public static int GetCurrentAge(this DateTimeOffset DateTimeOffset) { var CurrentDate = DateTime.UtcNow; int Age = CurrentDate.Year - DateTimeOffset.Year; if (CurrentDate < DateTimeOffset.AddYears(Age)) { Age--; } return(Age); }
/// <summary> /// Moves the date by specified number of full billing periods. /// </summary> /// <param name="plan">The plan containing billing period info.</param> /// <param name="datePlan">The date to move.</param> /// <param name="qty">The amount of full periods to add or remove to the date.</param> /// <returns>The date for a different billing period.</returns> private static DateTimeOffset MovePeriodDate(ApiPaymentPlan plan, DateTimeOffset datePlan, int qty) { return(plan.PeriodUnit switch { PaymentPeriodUnit.MonthPostpaid => datePlan.AddMonths(1 * qty), PaymentPeriodUnit.MonthPostpaidTrial => datePlan.AddMonths(1 * qty), PaymentPeriodUnit.Day => datePlan.AddDays((plan.PeriodQty ?? 1) * qty), PaymentPeriodUnit.Week => datePlan.AddDays(7 * (plan.PeriodQty ?? 1) * qty), PaymentPeriodUnit.Month => datePlan.AddMonths((plan.PeriodQty ?? 1) * qty), PaymentPeriodUnit.Year => datePlan.AddYears((plan.PeriodQty ?? 1) * qty), _ => throw new InvalidOperationException(Res.GetPlanPeriodUnrecognizedUnit) });
private int CalculateAge(DateTimeOffset dateOfBirth, DateTimeOffset now) { // Calculate the age. var age = now.Year - dateOfBirth.Year; // Go back to the year the person was born in case of a leap year if (dateOfBirth.Date > now.AddYears(-age)) { age--; } return(age); }
private static void InitCustomers() { DateTimeOffset dto = new DateTimeOffset(2015, 1, 1, 1, 2, 3, 4, TimeSpan.Zero); _customers = Enumerable.Range(1, 5).Select(e => new DCustomer { Id = e, DateTime = dto.AddYears(e).DateTime, Offset = e % 2 == 0 ? dto.AddMonths(e) : dto.AddDays(e).AddMilliseconds(10), Date = e % 2 == 0 ? dto.AddDays(e).Date : dto.AddDays(-e).Date, TimeOfDay = e % 3 == 0 ? dto.AddHours(e).TimeOfDay : dto.AddHours(-e).AddMilliseconds(10).TimeOfDay, NullableDateTime = e % 2 == 0 ? (DateTime?)null : dto.AddYears(e).DateTime, NullableOffset = e % 3 == 0 ? (DateTimeOffset?)null : dto.AddMonths(e), NullableDate = e % 2 == 0 ? (Date?)null : dto.AddDays(e).Date, NullableTimeOfDay = e % 3 == 0 ? (TimeOfDay?)null : dto.AddHours(e).TimeOfDay, DateTimes = new [] { dto.AddYears(e).DateTime, dto.AddMonths(e).DateTime }, Offsets = new [] { dto.AddMonths(e), dto.AddDays(e) }, Dates = new [] { (Date)dto.AddYears(e).Date, (Date)dto.AddMonths(e).Date }, TimeOfDays = new [] { (TimeOfDay)dto.AddHours(e).TimeOfDay, (TimeOfDay)dto.AddMinutes(e).TimeOfDay }, NullableDateTimes = new [] { dto.AddYears(e).DateTime, (DateTime?)null, dto.AddMonths(e).DateTime }, NullableOffsets = new [] { dto.AddMonths(e), (DateTimeOffset?)null, dto.AddDays(e) }, NullableDates = new [] { (Date)dto.AddYears(e).Date, (Date?)null, (Date)dto.AddMonths(e).Date }, NullableTimeOfDays = new [] { (TimeOfDay)dto.AddHours(e).TimeOfDay, (TimeOfDay?)null, (TimeOfDay)dto.AddMinutes(e).TimeOfDay }, }).ToList(); }
public static void TestAddition() { DateTimeOffset dt = new DateTimeOffset(new DateTime(1986, 8, 15, 10, 20, 5, 70)); Assert.Equal(17, dt.AddDays(2).Day); Assert.Equal(13, dt.AddDays(-2).Day); Assert.Equal(10, dt.AddMonths(2).Month); Assert.Equal(6, dt.AddMonths(-2).Month); Assert.Equal(1996, dt.AddYears(10).Year); Assert.Equal(1976, dt.AddYears(-10).Year); Assert.Equal(13, dt.AddHours(3).Hour); Assert.Equal(7, dt.AddHours(-3).Hour); Assert.Equal(25, dt.AddMinutes(5).Minute); Assert.Equal(15, dt.AddMinutes(-5).Minute); Assert.Equal(35, dt.AddSeconds(30).Second); Assert.Equal(2, dt.AddSeconds(-3).Second); Assert.Equal(80, dt.AddMilliseconds(10).Millisecond); Assert.Equal(60, dt.AddMilliseconds(-10).Millisecond); }
public void From_FromFixedDateTime_Tests(int value) { var originalPointInTime = new DateTimeOffset(1976, 12, 31, 17, 0, 0, 0, TimeSpan.Zero); Assert.AreEqual(value.Years().From(originalPointInTime), originalPointInTime.AddYears(value)); Assert.AreEqual(value.Months().From(originalPointInTime), originalPointInTime.AddMonths(value)); Assert.AreEqual(value.Weeks().From(originalPointInTime), originalPointInTime.AddDays(value*DaysPerWeek)); Assert.AreEqual(value.Days().From(originalPointInTime), originalPointInTime.AddDays(value)); Assert.AreEqual(value.Hours().From(originalPointInTime), originalPointInTime.AddHours(value)); Assert.AreEqual(value.Minutes().From(originalPointInTime), originalPointInTime.AddMinutes(value)); Assert.AreEqual(value.Seconds().From(originalPointInTime), originalPointInTime.AddSeconds(value)); Assert.AreEqual(value.Milliseconds().From(originalPointInTime), originalPointInTime.AddMilliseconds(value)); Assert.AreEqual(value.Ticks().From(originalPointInTime), originalPointInTime.AddTicks(value)); }
public void CustomIndex_And_TypeName_EndsUpInTheOutput() { //DO NOTE that you cant send objects as scalar values through Logger.*("{Scalar}", {}); var timestamp = new DateTimeOffset(2013, 05, 28, 22, 10, 20, 666, TimeSpan.FromHours(10)); const string messageTemplate = "{Song}++ @{Complex}"; var template = new MessageTemplateParser().Parse(messageTemplate); _options.TypeName = "custom-event-type"; _options.IndexFormat = "event-index-{0:yyyy.MM.dd}"; using (var sink = new ElasticsearchSink(_options)) { var properties = new List<LogEventProperty> { new LogEventProperty("Song", new ScalarValue("New Macabre")) }; var e = new LogEvent(timestamp, LogEventLevel.Information, null, template, properties); //one off sink.Emit(e); sink.Emit(e); var exception = new ArgumentException("parameter"); properties = new List<LogEventProperty> { new LogEventProperty("Song", new ScalarValue("Old Macabre")), new LogEventProperty("Complex", new ScalarValue(new { A = 1, B = 2})) }; e = new LogEvent(timestamp.AddYears(-2), LogEventLevel.Fatal, exception, template, properties); sink.Emit(e); } var bulkJsonPieces = this.AssertSeenHttpPosts(_seenHttpPosts, 4); bulkJsonPieces.Should().HaveCount(4); bulkJsonPieces[0].Should().Contain(@"""_index"":""event-index-2013.05.28"); bulkJsonPieces[0].Should().Contain(@"""_type"":""custom-event-type"); bulkJsonPieces[1].Should().Contain("New Macabre"); bulkJsonPieces[2].Should().Contain(@"""_index"":""event-index-2011.05.28"); bulkJsonPieces[2].Should().Contain(@"""_type"":""custom-event-type"); bulkJsonPieces[3].Should().Contain("Old Macabre"); bulkJsonPieces[3].Should().Contain("Complex\":{"); }
public static void AddYears(DateTimeOffset dateTimeOffset, int years, DateTimeOffset expected) { Assert.Equal(expected, dateTimeOffset.AddYears(years)); }
public void ToRelativeTimeTest() { var date = new DateTimeOffset(2015, 8, 7, 13, 26, 30, TimeSpan.Zero); var now = DateTimeOffset.Now; Assert.AreEqual("now", now.ToRelativeTimeString()); Assert.AreEqual("now", now.ToRelativeTimeString(now)); Assert.AreEqual("1 second ago", date.AddSeconds(-1).ToRelativeTimeString(date)); Assert.AreEqual("10 seconds ago", date.AddSeconds(-10).ToRelativeTimeString(date)); Assert.AreEqual("1 minute ago", date.AddSeconds(-90).ToRelativeTimeString(date)); Assert.AreEqual("1 minute ago", date.AddSeconds(-100).ToRelativeTimeString(date)); Assert.AreEqual("2 minutes ago", date.AddSeconds(-120).ToRelativeTimeString(date)); Assert.AreEqual("7 minutes ago", date.AddMinutes(-7).ToRelativeTimeString(date)); Assert.AreEqual("59 minutes ago", date.AddMinutes(-59).ToRelativeTimeString(date)); Assert.AreEqual("1 hour ago", date.AddMinutes(-60).ToRelativeTimeString(date)); Assert.AreEqual("1 hour ago", date.AddHours(-1).ToRelativeTimeString(date)); Assert.AreEqual("9 hours ago", date.AddHours(-9).ToRelativeTimeString(date)); Assert.AreEqual("1 day ago", date.AddHours(-24).ToRelativeTimeString(date)); Assert.AreEqual("1 day ago", date.AddHours(-30).ToRelativeTimeString(date)); Assert.AreEqual("2 days ago", date.AddHours(-48).ToRelativeTimeString(date)); Assert.AreEqual("1 day ago", date.AddDays(-1).ToRelativeTimeString(date)); Assert.AreEqual("12 days ago", date.AddDays(-12).ToRelativeTimeString(date)); Assert.AreEqual("29 days ago", date.AddDays(-29).ToRelativeTimeString(date)); Assert.AreEqual("1 month ago", date.AddDays(-30).ToRelativeTimeString(date)); Assert.AreEqual("1 month ago", date.AddMonths(-1).ToRelativeTimeString(date)); Assert.AreEqual("3 months ago", date.AddMonths(-3).ToRelativeTimeString(date)); Assert.AreEqual("11 months ago", date.AddMonths(-11).ToRelativeTimeString(date)); Assert.AreEqual("1 year ago", date.AddMonths(-12).ToRelativeTimeString(date)); Assert.AreEqual("1 year ago", date.AddYears(-1).ToRelativeTimeString(date)); Assert.AreEqual("3 years ago", date.AddYears(-3).ToRelativeTimeString(date)); Assert.AreEqual("1 second from now", date.AddSeconds(1).ToRelativeTimeString(date)); Assert.AreEqual("10 seconds from now", date.AddSeconds(10).ToRelativeTimeString(date)); Assert.AreEqual("1 minute from now", date.AddSeconds(90).ToRelativeTimeString(date)); Assert.AreEqual("1 minute from now", date.AddSeconds(100).ToRelativeTimeString(date)); Assert.AreEqual("2 minutes from now", date.AddSeconds(120).ToRelativeTimeString(date)); Assert.AreEqual("7 minutes from now", date.AddMinutes(7).ToRelativeTimeString(date)); Assert.AreEqual("59 minutes from now", date.AddMinutes(59).ToRelativeTimeString(date)); Assert.AreEqual("1 hour from now", date.AddMinutes(60).ToRelativeTimeString(date)); Assert.AreEqual("1 hour from now", date.AddHours(1).ToRelativeTimeString(date)); Assert.AreEqual("9 hours from now", date.AddHours(9).ToRelativeTimeString(date)); Assert.AreEqual("1 day from now", date.AddDays(1).ToRelativeTimeString(date)); Assert.AreEqual("1 day from now", date.AddHours(24).ToRelativeTimeString(date)); Assert.AreEqual("12 days from now", date.AddDays(12).ToRelativeTimeString(date)); Assert.AreEqual("29 days from now", date.AddDays(29).ToRelativeTimeString(date)); Assert.AreEqual("1 month from now", date.AddDays(30).ToRelativeTimeString(date)); Assert.AreEqual("1 month from now", date.AddMonths(1).ToRelativeTimeString(date)); Assert.AreEqual("3 months from now", date.AddMonths(3).ToRelativeTimeString(date)); Assert.AreEqual("11 months from now", date.AddMonths(11).ToRelativeTimeString(date)); Assert.AreEqual("1 year from now", date.AddMonths(12).ToRelativeTimeString(date)); Assert.AreEqual("1 year from now", date.AddYears(1).ToRelativeTimeString(date)); Assert.AreEqual("3 years from now", date.AddYears(3).ToRelativeTimeString(date)); }
public IHttpActionResult ResetDataSource() { DateAndTimeOfDayContext db = new DateAndTimeOfDayContext(); if (!db.Customers.Any()) { DateTimeOffset dateTime = new DateTimeOffset(2014, 12, 24, 1, 2, 3, 4, new TimeSpan(-8, 0, 0)); IEnumerable<EfCustomer> customers = Enumerable.Range(1, 5).Select(e => new EfCustomer { Id = e, DateTime = dateTime.AddYears(e).AddHours(e).AddMilliseconds(e).DateTime, NullableDateTime = e % 2 == 0 ? (DateTime?)null : dateTime.AddHours(e * 5).AddMilliseconds(e * 5).DateTime, Offset = dateTime.AddMonths(e).AddHours(e).AddMilliseconds(e), NullableOffset = e % 3 == 0 ? (DateTimeOffset?)null : dateTime.AddDays(e).AddHours(e * 5) }).ToList(); foreach (EfCustomer customer in customers) { db.Customers.Add(customer); } db.SaveChanges(); } return Ok(); }
/// <summary> /// Returns an enumerable collection of log blobs containing Analytics log records. The blobs are retrieved lazily. /// </summary> /// <param name="service">A <see cref="StorageService"/> enumeration value.</param> /// <param name="startTime">A <see cref="DateTimeOffset"/> object representing the start of the time range for which logs should be retrieved.</param> /// <param name="endTime">A <see cref="DateTimeOffset"/> object representing the end of the time range for which logs should be retrieved.</param> /// <param name="operations">A <see cref="LoggingOperations"/> enumeration value that indicates the types of logging operations on which to filter the log blobs.</param> /// <param name="details">A <see cref="BlobListingDetails"/> enumeration value that indicates whether or not blob metadata should be returned. Only <c>None</c> and <c>Metadata</c> are valid values. </param> /// <param name="options">A <see cref="BlobRequestOptions"/> object that specifies additional options for the request.</param> /// <param name="operationContext">An <see cref="OperationContext"/> object that represents the context for the current operation.</param> /// <returns>An enumerable collection of objects that implement <see cref="ICloudBlob"/> and are retrieved lazily.</returns> /// <remarks>Note that specifying a logging operation type for the <paramref name="operations"/> parameter will return any Analytics log blob that contains the specified logging operation, /// even if that log blob also includes other types of logging operations. Also note that the only currently supported values for the <paramref name="details"/> /// parameter are <c>None</c> and <c>Metadata</c>.</remarks> public IEnumerable<ICloudBlob> ListLogs(StorageService service, DateTimeOffset startTime, DateTimeOffset? endTime, LoggingOperations operations, BlobListingDetails details, BlobRequestOptions options, OperationContext operationContext) { CloudBlobDirectory logDirectory = this.GetLogDirectory(service); BlobListingDetails metadataDetails = details; DateTimeOffset utcStartTime = startTime.ToUniversalTime(); DateTimeOffset dateCounter = new DateTimeOffset(utcStartTime.Ticks - (utcStartTime.Ticks % TimeSpan.TicksPerHour), utcStartTime.Offset); DateTimeOffset? utcEndTime = null; string endPrefix = null; // Ensure that the date range is correct. if (endTime.HasValue) { utcEndTime = endTime.Value.ToUniversalTime(); endPrefix = logDirectory.Prefix + utcEndTime.Value.ToString("yyyy/MM/dd/HH", CultureInfo.InvariantCulture); if (utcStartTime > utcEndTime.Value) { string errorString = string.Format(CultureInfo.InvariantCulture, SR.StartTimeExceedsEndTime, startTime, endTime.Value); throw new ArgumentException(errorString); } } // Currently only support the ability to retrieve metadata on logs. if (details.HasFlag(BlobListingDetails.Copy) || details.HasFlag(BlobListingDetails.Snapshots) || details.HasFlag(BlobListingDetails.UncommittedBlobs)) { throw new ArgumentException(SR.InvalidListingDetails); } // At least one LogType must be specified. if (operations == LoggingOperations.None) { throw new ArgumentException(SR.InvalidLoggingLevel); } // If metadata or a specific LogType is specified, metadata should be retrieved. if (details.HasFlag(BlobListingDetails.Metadata) || !operations.HasFlag(LoggingOperations.All)) { metadataDetails = BlobListingDetails.Metadata; } // Check logs using an hour-based prefix until we reach a day boundary. while (dateCounter.Hour > 0) { string currentPrefix = logDirectory.Prefix + dateCounter.ToString("yyyy/MM/dd/HH", CultureInfo.InvariantCulture); IEnumerable<IListBlobItem> currentLogs = logDirectory.Container.ListBlobs(currentPrefix, true, metadataDetails, options, operationContext); foreach (ICloudBlob log in currentLogs) { if (!utcEndTime.HasValue || string.Compare(log.Parent.Prefix, endPrefix) <= 0) { if (IsCorrectLogType(log, operations)) { yield return log; } } else { yield break; } } dateCounter = dateCounter.AddHours(1); if (dateCounter > DateTimeOffset.UtcNow.AddHours(1)) { yield break; } } // Check logs using a day-based prefix until we reach a month boundary. while (dateCounter.Day > 1) { string currentPrefix = logDirectory.Prefix + dateCounter.ToString("yyyy/MM/dd", CultureInfo.InvariantCulture); IEnumerable<IListBlobItem> currentLogs = logDirectory.Container.ListBlobs(currentPrefix, true, metadataDetails, options, operationContext); foreach (ICloudBlob log in currentLogs) { if (!utcEndTime.HasValue || string.Compare(log.Parent.Prefix, endPrefix) <= 0) { if (IsCorrectLogType(log, operations)) { yield return log; } } else { yield break; } } dateCounter = dateCounter.AddDays(1); if (dateCounter > DateTimeOffset.UtcNow.AddHours(1)) { yield break; } } // Check logs using a month-based prefix until we reach a year boundary. while (dateCounter.Month > 1) { string currentPrefix = logDirectory.Prefix + dateCounter.ToString("yyyy/MM", CultureInfo.InvariantCulture); IEnumerable<IListBlobItem> currentLogs = logDirectory.Container.ListBlobs(currentPrefix, true, metadataDetails, options, operationContext); foreach (ICloudBlob log in currentLogs) { if (!utcEndTime.HasValue || string.Compare(log.Parent.Prefix, endPrefix) <= 0) { if (IsCorrectLogType(log, operations)) { yield return log; } } else { yield break; } } dateCounter = dateCounter.AddMonths(1); if (dateCounter > DateTimeOffset.UtcNow.AddHours(1)) { yield break; } } // Continue using a year-based prefix. while (true) { string currentPrefix = logDirectory.Prefix + dateCounter.ToString("yyyy", CultureInfo.InvariantCulture); IEnumerable<IListBlobItem> currentLogs = logDirectory.Container.ListBlobs(currentPrefix, true, metadataDetails, options, operationContext); foreach (ICloudBlob log in currentLogs) { if (!utcEndTime.HasValue || string.Compare(log.Parent.Prefix, endPrefix) <= 0) { if (IsCorrectLogType(log, operations)) { yield return log; } } else { yield break; } } dateCounter = dateCounter.AddYears(1); if (dateCounter > DateTimeOffset.UtcNow.AddHours(1)) { yield break; } } }
private static DateTimeOffset TranslatedAdd(DateTimeOffset date, IntervalUnit unit, int amountToAdd) { switch (unit) { case IntervalUnit.Day: return date.AddDays(amountToAdd); case IntervalUnit.Hour: return date.AddHours(amountToAdd); case IntervalUnit.Minute: return date.AddMinutes(amountToAdd); case IntervalUnit.Month: return date.AddMonths(amountToAdd); case IntervalUnit.Second: return date.AddSeconds(amountToAdd); case IntervalUnit.Millisecond: return date.AddMilliseconds(amountToAdd); case IntervalUnit.Week: return date.AddDays(amountToAdd*7); case IntervalUnit.Year: return date.AddYears(amountToAdd); default: throw new ArgumentException("Unknown IntervalUnit"); } }
/// <summary> /// Gets the next fire time after the given time. /// </summary> /// <param name="afterTimeUtc">The UTC time to start searching from.</param> /// <returns></returns> public virtual DateTimeOffset? GetTimeAfter(DateTimeOffset afterTimeUtc) { // move ahead one second, since we're computing the time *after* the // given time afterTimeUtc = afterTimeUtc.AddSeconds(1); // CronTrigger does not deal with milliseconds DateTimeOffset d = CreateDateTimeWithoutMillis(afterTimeUtc); // change to specified time zone d = TimeZoneUtil.ConvertTime(d, TimeZone); bool gotOne = false; // loop until we've computed the next time, or we've past the endTime while (!gotOne) { ISortedSet<int> st; int t; int sec = d.Second; // get second................................................. st = seconds.TailSet(sec); if (st != null && st.Count != 0) { sec = st.First(); } else { sec = seconds.First(); d = d.AddMinutes(1); } d = new DateTimeOffset(d.Year, d.Month, d.Day, d.Hour, d.Minute, sec, d.Millisecond, d.Offset); int min = d.Minute; int hr = d.Hour; t = -1; // get minute................................................. st = minutes.TailSet(min); if (st != null && st.Count != 0) { t = min; min = st.First(); } else { min = minutes.First(); hr++; } if (min != t) { d = new DateTimeOffset(d.Year, d.Month, d.Day, d.Hour, min, 0, d.Millisecond, d.Offset); d = SetCalendarHour(d, hr); continue; } d = new DateTimeOffset(d.Year, d.Month, d.Day, d.Hour, min, d.Second, d.Millisecond, d.Offset); hr = d.Hour; int day = d.Day; t = -1; // get hour................................................... st = hours.TailSet(hr); if (st != null && st.Count != 0) { t = hr; hr = st.First(); } else { hr = hours.First(); day++; } if (hr != t) { int daysInMonth = DateTime.DaysInMonth(d.Year, d.Month); if (day > daysInMonth) { d = new DateTimeOffset(d.Year, d.Month, daysInMonth, d.Hour, 0, 0, d.Millisecond, d.Offset).AddDays(day - daysInMonth); } else { d = new DateTimeOffset(d.Year, d.Month, day, d.Hour, 0, 0, d.Millisecond, d.Offset); } d = SetCalendarHour(d, hr); continue; } d = new DateTimeOffset(d.Year, d.Month, d.Day, hr, d.Minute, d.Second, d.Millisecond, d.Offset); day = d.Day; int mon = d.Month; t = -1; int tmon = mon; // get day................................................... bool dayOfMSpec = !daysOfMonth.Contains(NoSpec); bool dayOfWSpec = !daysOfWeek.Contains(NoSpec); if (dayOfMSpec && !dayOfWSpec) { // get day by day of month rule st = daysOfMonth.TailSet(day); if (lastdayOfMonth) { if (!nearestWeekday) { t = day; day = GetLastDayOfMonth(mon, d.Year); day -= lastdayOffset; if (t > day) { mon++; if (mon > 12) { mon = 1; tmon = 3333; // ensure test of mon != tmon further below fails d.AddYears(1); } day = 1; } } else { t = day; day = GetLastDayOfMonth(mon, d.Year); day -= lastdayOffset; DateTimeOffset tcal = new DateTimeOffset(d.Year, mon, day, 0, 0, 0, d.Offset); int ldom = GetLastDayOfMonth(mon, d.Year); DayOfWeek dow = tcal.DayOfWeek; if (dow == System.DayOfWeek.Saturday && day == 1) { day += 2; } else if (dow == System.DayOfWeek.Saturday) { day -= 1; } else if (dow == System.DayOfWeek.Sunday && day == ldom) { day -= 2; } else if (dow == System.DayOfWeek.Sunday) { day += 1; } DateTimeOffset nTime = new DateTimeOffset(tcal.Year, mon, day, hr, min, sec, d.Millisecond, d.Offset); if (nTime.ToUniversalTime() < afterTimeUtc) { day = 1; mon++; } } } else if (nearestWeekday) { t = day; day = daysOfMonth.First(); DateTimeOffset tcal = new DateTimeOffset(d.Year, mon, day, 0, 0, 0, d.Offset); int ldom = GetLastDayOfMonth(mon, d.Year); DayOfWeek dow = tcal.DayOfWeek; if (dow == System.DayOfWeek.Saturday && day == 1) { day += 2; } else if (dow == System.DayOfWeek.Saturday) { day -= 1; } else if (dow == System.DayOfWeek.Sunday && day == ldom) { day -= 2; } else if (dow == System.DayOfWeek.Sunday) { day += 1; } tcal = new DateTimeOffset(tcal.Year, mon, day, hr, min, sec, d.Offset); if (tcal.ToUniversalTime() < afterTimeUtc) { day = daysOfMonth.First(); mon++; } } else if (st != null && st.Count != 0) { t = day; day = st.First(); // make sure we don't over-run a short month, such as february int lastDay = GetLastDayOfMonth(mon, d.Year); if (day > lastDay) { day = daysOfMonth.First(); mon++; } } else { day = daysOfMonth.First(); mon++; } if (day != t || mon != tmon) { if (mon > 12) { d = new DateTimeOffset(d.Year, 12, day, 0, 0, 0, d.Offset).AddMonths(mon - 12); } else { // This is to avoid a bug when moving from a month //with 30 or 31 days to a month with less. Causes an invalid datetime to be instantiated. // ex. 0 29 0 30 1 ? 2009 with clock set to 1/30/2009 int lDay = DateTime.DaysInMonth(d.Year, mon); if (day <= lDay) { d = new DateTimeOffset(d.Year, mon, day, 0, 0, 0, d.Offset); } else { d = new DateTimeOffset(d.Year, mon, lDay, 0, 0, 0, d.Offset).AddDays(day - lDay); } } continue; } } else if (dayOfWSpec && !dayOfMSpec) { // get day by day of week rule if (lastdayOfWeek) { // are we looking for the last XXX day of // the month? int dow = daysOfWeek.First(); // desired // d-o-w int cDow = ((int) d.DayOfWeek) + 1; // current d-o-w int daysToAdd = 0; if (cDow < dow) { daysToAdd = dow - cDow; } if (cDow > dow) { daysToAdd = dow + (7 - cDow); } int lDay = GetLastDayOfMonth(mon, d.Year); if (day + daysToAdd > lDay) { // did we already miss the // last one? if (mon == 12) { //will we pass the end of the year? d = new DateTimeOffset(d.Year, mon - 11, 1, 0, 0, 0, d.Offset).AddYears(1); } else { d = new DateTimeOffset(d.Year, mon + 1, 1, 0, 0, 0, d.Offset); } // we are promoting the month continue; } // find date of last occurrence of this day in this month... while ((day + daysToAdd + 7) <= lDay) { daysToAdd += 7; } day += daysToAdd; if (daysToAdd > 0) { d = new DateTimeOffset(d.Year, mon, day, 0, 0, 0, d.Offset); // we are not promoting the month continue; } } else if (nthdayOfWeek != 0) { // are we looking for the Nth XXX day in the month? int dow = daysOfWeek.First(); // desired // d-o-w int cDow = ((int) d.DayOfWeek) + 1; // current d-o-w int daysToAdd = 0; if (cDow < dow) { daysToAdd = dow - cDow; } else if (cDow > dow) { daysToAdd = dow + (7 - cDow); } bool dayShifted = false; if (daysToAdd > 0) { dayShifted = true; } day += daysToAdd; int weekOfMonth = day/7; if (day%7 > 0) { weekOfMonth++; } daysToAdd = (nthdayOfWeek - weekOfMonth)*7; day += daysToAdd; if (daysToAdd < 0 || day > GetLastDayOfMonth(mon, d.Year)) { if (mon == 12) { d = new DateTimeOffset(d.Year, mon - 11, 1, 0, 0, 0, d.Offset).AddYears(1); } else { d = new DateTimeOffset(d.Year, mon + 1, 1, 0, 0, 0, d.Offset); } // we are promoting the month continue; } else if (daysToAdd > 0 || dayShifted) { d = new DateTimeOffset(d.Year, mon, day, 0, 0, 0, d.Offset); // we are NOT promoting the month continue; } } else { int cDow = ((int) d.DayOfWeek) + 1; // current d-o-w int dow = daysOfWeek.First(); // desired // d-o-w st = daysOfWeek.TailSet(cDow); if (st != null && st.Count > 0) { dow = st.First(); } int daysToAdd = 0; if (cDow < dow) { daysToAdd = dow - cDow; } if (cDow > dow) { daysToAdd = dow + (7 - cDow); } int lDay = GetLastDayOfMonth(mon, d.Year); if (day + daysToAdd > lDay) { // will we pass the end of the month? if (mon == 12) { //will we pass the end of the year? d = new DateTimeOffset(d.Year, mon - 11, 1, 0, 0, 0, d.Offset).AddYears(1); } else { d = new DateTimeOffset(d.Year, mon + 1, 1, 0, 0, 0, d.Offset); } // we are promoting the month continue; } else if (daysToAdd > 0) { // are we swithing days? d = new DateTimeOffset(d.Year, mon, day + daysToAdd, 0, 0, 0, d.Offset); continue; } } } else { // dayOfWSpec && !dayOfMSpec throw new Exception( "Support for specifying both a day-of-week AND a day-of-month parameter is not implemented."); } d = new DateTimeOffset(d.Year, d.Month, day, d.Hour, d.Minute, d.Second, d.Offset); mon = d.Month; int year = d.Year; t = -1; // test for expressions that never generate a valid fire date, // but keep looping... if (year > MaxYear) { return null; } // get month................................................... st = months.TailSet((mon)); if (st != null && st.Count != 0) { t = mon; mon = st.First(); } else { mon = months.First(); year++; } if (mon != t) { d = new DateTimeOffset(year, mon, 1, 0, 0, 0, d.Offset); continue; } d = new DateTimeOffset(d.Year, mon, d.Day, d.Hour, d.Minute, d.Second, d.Offset); year = d.Year; t = -1; // get year................................................... st = years.TailSet((year)); if (st != null && st.Count != 0) { t = year; year = st.First(); } else { return null; } // ran out of years... if (year != t) { d = new DateTimeOffset(year, 1, 1, 0, 0, 0, d.Offset); continue; } d = new DateTimeOffset(year, d.Month, d.Day, d.Hour, d.Minute, d.Second, d.Offset); gotOne = true; } // while( !done ) return d.ToUniversalTime(); }
public void CanQueryEntitySet_WithDateTimeProperties() { // Arrange DateTimeOffset expect = new DateTimeOffset(new DateTime(2015, 12, 31, 20, 12, 30, DateTimeKind.Utc)); const string Uri = "http://localhost/odata/DateTimeModels"; HttpClient client = GetClient(timeZoneInfo: null); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, Uri); // Act HttpResponseMessage response = client.SendAsync(request).Result; var result = JObject.Parse(response.Content.ReadAsStringAsync().Result); // Assert Assert.True(response.IsSuccessStatusCode); Assert.Equal("http://localhost/odata/$metadata#DateTimeModels", result["@odata.context"]); var values = result["value"]; Assert.Equal(5, values.Count()); for (int i = 0; i < 5; i++) { Assert.Equal(expect, (DateTimeOffset)values[i]["BirthdayA"]); expect = expect.AddYears(1); } }