/// <summary>
        /// First day of week
        /// </summary>
        /// <param name="ld"></param>
        /// <returns></returns>
        public static LocalDate FirstDayOfWeek(this LocalDate ld)
        {
            var currentCulture = CultureInfo.CurrentCulture;
            var firstDayOfWeek = (int)currentCulture.DateTimeFormat.FirstDayOfWeek;

            var currentDayOfWeek = (int)ld.DayOfWeek;

            var offset = currentDayOfWeek - firstDayOfWeek < 0 ? 7 : 0;
            var numberOfDaysSinceBeginningOfTheWeek = currentDayOfWeek + offset - firstDayOfWeek;

            return(ld.AddDays(-numberOfDaysSinceBeginningOfTheWeek));
        }
Пример #2
0
        public void Test__AddDays()
        {
            // Arrange
            var localDate = new LocalDate(2010, 1, 2);
            var expected  = new LocalDate(2010, 1, 27);

            // Act
            localDate = localDate.AddDays(25) as LocalDate;

            // Assert
            Assert.Equal(expected, localDate);
        }
        /// <summary>
        /// Previous Year
        /// </summary>
        /// <param name="ld"></param>
        /// <returns></returns>
        public static LocalDate PreviousYear(this LocalDate ld)
        {
            var year        = ld.Year - 1;
            var daysOfMonth = DateTime.DaysInMonth(year, ld.Month);

            if (daysOfMonth == ld.Day)
            {
                return(new LocalDate(ld.Era, year, ld.Month, ld.Day));
            }

            var d = ld.Day - daysOfMonth;
            var p = new LocalDate(ld.Era, year, ld.Month, daysOfMonth);

            return(p.AddDays(d));
        }
 /// <summary>
 /// Next day
 /// </summary>
 /// <param name="ld"></param>
 /// <returns></returns>
 public static LocalDate NextDay(this LocalDate ld) => ld.AddDays(1);
 /// <summary>
 /// Previous Day
 /// </summary>
 /// <param name="ld"></param>
 /// <returns></returns>
 public static LocalDate PreviousDay(this LocalDate ld) => ld.AddDays(-1);
Пример #6
0
        public void Test_AddDays_Ok()
        {
            LocalDate localDate       = new LocalDate(2019, Month.November, 5);
            int       daysToAdd       = 3;
            LocalDate localDateResult = new LocalDate(2019, Month.November, 8);

            Assert.Equal(localDateResult, localDate.AddDays(daysToAdd));

            localDate       = new LocalDate(2019, Month.November, 5);
            daysToAdd       = 29;
            localDateResult = new LocalDate(2019, Month.December, 4);

            Assert.Equal(localDateResult, localDate.AddDays(daysToAdd));

            localDate       = new LocalDate(2019, Month.November, 5);
            daysToAdd       = 60;
            localDateResult = new LocalDate(2020, Month.January, 4);

            Assert.Equal(localDateResult, localDate.AddDays(daysToAdd));

            localDate       = new LocalDate(2019, Month.November, 5);
            daysToAdd       = -3;
            localDateResult = new LocalDate(2019, Month.November, 2);

            Assert.Equal(localDateResult, localDate.AddDays(daysToAdd));

            localDate       = new LocalDate(2019, Month.November, 5);
            daysToAdd       = -37;
            localDateResult = new LocalDate(2019, Month.September, 29);

            Assert.Equal(localDateResult, localDate.AddDays(daysToAdd));

            localDate       = new LocalDate(2020, Month.February, 28);
            daysToAdd       = 1;
            localDateResult = new LocalDate(2020, Month.February, 29);

            Assert.Equal(localDateResult, localDate.AddDays(daysToAdd));

            localDate       = new LocalDate(2020, Month.February, 28);
            daysToAdd       = 2;
            localDateResult = new LocalDate(2020, Month.March, 1);

            Assert.Equal(localDateResult, localDate.AddDays(daysToAdd));

            localDate       = new LocalDate(2019, Month.February, 28);
            daysToAdd       = 1;
            localDateResult = new LocalDate(2019, Month.March, 1);

            Assert.Equal(localDateResult, localDate.AddDays(daysToAdd));

            localDate       = new LocalDate(2020, Month.March, 1);
            daysToAdd       = -1;
            localDateResult = new LocalDate(2020, Month.February, 29);

            Assert.Equal(localDateResult, localDate.AddDays(daysToAdd));

            localDate       = new LocalDate(2019, Month.March, 1);
            daysToAdd       = -1;
            localDateResult = new LocalDate(2019, Month.February, 28);

            Assert.Equal(localDateResult, localDate.AddDays(daysToAdd));
        }