如何计算 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 );
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 );