public void BeginningOfDayHasCorrectResult()
 {
     DateTime dateTime = new DateTime(1970, 11, 5, 12, 30, 20);
     var actual = dateTime.BeginningOfDay();
     Assert.AreEqual(dateTime.Date, actual.Date);
     Assert.AreEqual(dateTime.Day, actual.Add(new TimeSpan(0, 23, 59, 59)).Day);
     Assert.AreEqual(0, actual.Second);
     Assert.AreEqual(0, actual.Minute);
     Assert.AreEqual(0, actual.Hour);
 }
Example #2
0
        /// <summary>
        /// internal for testing
        /// </summary>
        /// <param name="scheduledTimeAndDay"></param>
        /// <returns></returns>
        internal DateTime WhenLastRunShouldHaveBeen(UpdateTimeAndDay scheduledTimeAndDay, DateTime now)
        {
            var today = now.BeginningOfDay();

            if (scheduledTimeAndDay.DayOfWeek == UpdateDayOfWeek.Everyday)
            {
                if (now.Hour > scheduledTimeAndDay.Time)
                {
                    //it should have ranToday
                    return today.AddHours(scheduledTimeAndDay.Time);
                }
                else
                {
                    return today.Subtract(TimeSpan.FromDays(1)).AddHours(scheduledTimeAndDay.Time);
                    //it should have ran yesterday
                }
            }

            else
            {

                //it should run once a week
                var isToday = UpdateDayOfWeekConverter.Convert(scheduledTimeAndDay.DayOfWeek) == now.DayOfWeek;
                if (isToday)
                {
                    if (now.Hour < scheduledTimeAndDay.Time)
                    {
                        return today.Subtract(TimeSpan.FromDays(7)).AddHours(scheduledTimeAndDay.Time);
                    }
                    else
                    {
                        return today.AddHours(scheduledTimeAndDay.Time);
                    }

                }
                else
                {
                    var lastTime = today.Previous((DayOfWeek)UpdateDayOfWeekConverter.Convert(scheduledTimeAndDay.DayOfWeek));
                    lastTime = lastTime.SetHour(scheduledTimeAndDay.Time);
                    return lastTime;
                }
            }
        }
Example #3
0
 /// <summary>
 /// Returns original <see cref="DateTime"/> value with time part set to midnight (alias for <see cref="BeginningOfDay"/> method).
 /// </summary>
 public static System.DateTime Midnight(this System.DateTime value)
 {
     return(value.BeginningOfDay());
 }
 public void LastDayOfQuarter_Q4_SetsTheDayToLastDayOfQuarter()
 {
     var expected = new DateTime(2002, 12, 31, 4, 5, 6, DateTimeKind.Local);
     DateAssert.AreEqual(expected.BeginningOfDay(), new DateTime(2002, 11, 22, 12, 12, 12, DateTimeKind.Local).LastDayOfQuarter().BeginningOfDay());
 }
 public void FirstDayOfQuarter_Q4_SetsDayToFirstDay()
 {
     var expected = new DateTime(2002, 10, 1, 7, 8, 9, DateTimeKind.Local);
     DateAssert.AreEqual(expected.BeginningOfDay(), new DateTime(2002, 11, 22, 12, 12, 12, DateTimeKind.Local).FirstDayOfQuarter().BeginningOfDay());
 }
 public void NextQuarter_LastDay_SetsTheDayToLastDayOfQuarter()
 {
     var expected = new DateTime(2002, 6, 30, 3, 5, 6, DateTimeKind.Local);
     DateAssert.AreEqual(expected.BeginningOfDay(), 1.Quarters().From(new DateTime(2002, 1, 10, 4, 5, 6, DateTimeKind.Local).LastDayOfQuarter().BeginningOfDay()));
 }
 public void PreviousQuarter_LastDay_SetsTheDayToLastDayOfQuarter()
 {
     var expected = new DateTime(2001, 12, 31, 3, 5, 6, DateTimeKind.Local);
     DateAssert.AreEqual(expected.BeginningOfDay(), 1.Quarters().Ago(new DateTime(2002, 1, 10, 4, 5, 6, DateTimeKind.Local).LastDayOfQuarter().BeginningOfDay()));
 }
 public void TimeZoneTests()
 {
     /* story:
      * 1. a web client submits a request to the server for "today",
      * 2. a developer uses :BeginningOfDay and :EndOfDay to perform clamping server-side.
      * 
      * expected:
      * 3. user expects a timezone-correct utc responses from the server, 
      * 
      * actual:
      * 4. user receives a utc response that is too early (:BeginningOfDay), or
      * 5. user receives a utc response that is too late (:EndOfDay)
      */
     for (var i = -11; i <= 12; i++)
     {
         var beginningOfDayUtc = new DateTime(2015, 1, 1, 0, 0, 0, DateTimeKind.Utc);
         var actualDayStart = beginningOfDayUtc.BeginningOfDay(i);
         var actualDayEnd = beginningOfDayUtc.EndOfDay(i);
         var expectedDayStart = beginningOfDayUtc
             .AddHours(i);
         var expectedDayEnd = beginningOfDayUtc
             .SetHour(23).SetMinute(59).SetSecond(59).SetMillisecond(999)
             .AddHours(i);
         DateAssert.AreEqual(expectedDayStart, actualDayStart);
         DateAssert.AreEqual(expectedDayEnd, actualDayEnd);
     }
 }