【问题标题】:How do I calculate the next/previous ISO weekday number?如何计算下一个/上一个 ISO 工作日编号?
【发布时间】:2017-09-15 09:23:36
【问题描述】:

ISO 8601 standard 表示周一的工作日 1 到周日的 7。 给定一个从 1 到 7 的工作日编号,如何计算下一个/上一个工作日的编号?

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

【问题讨论】:

    标签: next date-arithmetic iso8601 dayofweek weekday


    【解决方案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 );
    

    【讨论】:

      猜你喜欢
      • 2012-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-03
      • 2023-02-13
      • 1970-01-01
      相关资源
      最近更新 更多