如何计算下一个/上一个 ISO 工作日编号?

问题描述 投票:0回答:1

ISO 8601 标准 将工作日编号为 1(表示星期一)到 7(表示星期日)。 给定从 1 到 7 的工作日编号,如何计算下一个/上一个工作日的编号?

例如给定 1,下一个工作日数字将为 2,前一个工作日数字将为 7。

date-arithmetic iso8601 dayofweek weekday nodatime
1个回答
1
投票
工作日数字可以通过简单的加法和取模来计算。公式如下:

下一个工作日编号

(工作日数 % 7)+ 1

前一个工作日编号

((工作日数 + 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 );
    
© www.soinside.com 2019 - 2024. All rights reserved.