Java 一周中的天数计算

标签 java enums days

我有一个一周中的天数(每天、周末和工作日)的枚举,如下所示,其中每个条目都有一个 int 值。

public enum DaysOfWeek {


  Everyday(127),
  Weekend(65),
  Weekdays(62), 
  Monday(2),
  Tuesday(4),
  Wednesday(8),
  Thursday(16),
  Friday(32), 
  Saturday(64),
  Sunday(1);

  private int bitValue;

  private DaysOfWeek(int n){
    this.bitValue = n;
  }

  public int getBitValue(){
    return this.bitValue;
  }
}

给定值的任意组合的总数,计算所有单个值并从中创建数组列表的最简单方法是什么。例如,给定数字 56(即周三+周四+周五),如何计算天数。

最佳答案

表示枚举值集合的正确方法是使用 EnumSet 。这在内部使用了位 vector 。但是在代码中暴露这样的实现细节并不是一个好主意。我们在这里进行面向对象,而不是闲聊。

此外,您将单个值和值集合的概念混合在一起,这可能会导致以后出现麻烦。

使用 DayOfWeek 的示例Java 8 及更高版本中内置了枚举。

EnumSet<DayOfWeek> weekend = EnumSet.of( DayOfWeek.SATURDAY , DayOfWeek.SUNDAY );

Boolean isTodayWeekend = weekend.contains( LocalDate.now().getDayOfWeek() );

关于Java 一周中的天数计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2461815/

相关文章:

java - 是否可以在 Java 中为枚举创建动态代理?

php - 从分钟正确计算小时

MySQL 列出第一个条目 x 天内的所有条目

java - 使用 Jackson 序列化 TreeModel

java - Android 服务线程

java在对象上同步与在this上同步

c++ - 命名空间中的 Doxygen 枚举

java - 用 javap 反汇编的枚举不显示构造函数参数

以天为单位的 Javascript 纪元时间

java - 使用 ANTLR 和 Java 构建解析树