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