如何在给定日期的一周内获得工作日?

问题描述

这个问题可能不是最明确的问题,但这是我需要的:

var date = new LocalDate(2020,05,05);

我需要给定日期所在的一周的星期一和星期五的日期。

解决方法

我建议将代码作为日期调整器

public static class DayOfWeekAdjusters
{
    public static Func<LocalDate,LocalDate> ForIsoDayOfWeek(IsoDayOfWeek dayOfWeek) =>
        date => WeekYearRules.Iso.GetLocalDate(
            WeekYearRules.Iso.GetWeekYear(date),WeekYearRules.Iso.GetWeekOfWeekYear(date),dayOfWeek);
}

然后您可以使用:

private static readonly Func<LocalDate,LocalDate> MondayAdjuster =
    DayOfWeekAdjusters.ForIsoDayOfWeek(IsoDayOfWeek.Monday);
private static readonly Func<LocalDate,LocalDate> FridayAdjuster =
    DayOfWeekAdjusters.ForIsoDayOfWeek(IsoDayOfWeek.Friday);

...
var date = new LocalDate(2020,05,05);
var monday = date.With(MondayAdjuster);
var friday = date.With(FridayAdjuster);

您也可以将这些调节器与LocalDateTimeOffsetDateTime一起使用。

,

这是我想出的:

void Main()
{
    var date = new LocalDate(2020,05);
    var yearWeek = WeekYearRules.Iso.GetWeekOfWeekYear(date);
    var monday = WeekYearRules.Iso.GetLocalDate(date.Year,yearWeek,IsoDayOfWeek.Monday);
    var friday = WeekYearRules.Iso.GetLocalDate(date.Year,IsoDayOfWeek.Friday);
    Console.WriteLine(monday);
    Console.WriteLine(friday);
}

或者您可以将此逻辑提取到扩展方法中,以便获得:

void Main()
{   
    var date = new LocalDate(2020,05);
    var monday = date.GetDateOfWeekDay(IsoDayOfWeek.Monday);
    var friday = date.GetDateOfWeekDay(IsoDayOfWeek.Friday);
    Console.WriteLine(monday);
    Console.WriteLine(friday);
}

public static class LocalDateTimeExtensions {
    // I coudn't come up with better name for this function,if you have any suggestions... :)
    public static LocalDate GetDateOfWeekDay(this LocalDate date,IsoDayOfWeek dayOfWeek)
    {
        var currentWeekYear = WeekYearRules.Iso.GetWeekOfWeekYear(date);
        return WeekYearRules.Iso.GetLocalDate(date.Year,currentWeekYear,dayOfWeek);
    }
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...