如何计算 next/previous ISO 工作日数?

How do I calculate the next/previous ISO weekday number?

ISO 8601 standard 工作日编号 1 表示星期一到 7 表示星期日。 给定从 1 到 7 的工作日编号,如何计算 next/previous 工作日的编号?

例如给定 1,下一个工作日编号为 2,前一个工作日编号为 7。

星期几可以通过简单的加法和模数来计算。公式如下:

下一个工作日编号

(weekday number % 7) + 1

前一个工作日数

((weekday number + 5) % 7) + 1


使用 C# 和 NodaTime 的 IsoDayOfWeek,您可以创建两个简单的扩展方法,例如:

public static IsoDayOfWeek NextDay( this IsoDayOfWeek dayOfWeek ) => (IsoDayOfWeek)( (int)dayOfWeek % 7 + 1 );
public static IsoDayOfWeek PreviousDay( this IsoDayOfWeek dayOfWeek ) => (IsoDayOfWeek)( (int)( dayOfWeek + 5 ) % 7 + 1 );