如何设置java DayOfWeek值?

时间:2016-04-27 13:21:41

标签: java dayofweek

我想创建一个获得enum DayOfWeek的函数,然后将这一天的值用于其他内容。

我的问题是我无法设置(实际覆盖)返回的值。

例如:

DayOfWeek.SUNDAY.getValue(); // return 7

我想将SUNDAY设置为0,将MONDAY设置为1,依此类推...... 有没有办法呢?

5 个答案:

答案 0 :(得分:1)

只需使用int类型的成员,分配该int的构造函数和访问者来定义自己的枚举:

public enum MyDayOfWeek {

  SUNDAY(0), MONDAY(1)....;
  private int id;
  MyDayOfWeek(int id) {
    this.id = id;
  }

  public int getId() { return id;}
}

答案 1 :(得分:1)

java.time.DayOfWeek

Java 8及更高版本具有内置的枚举java.time.DayOfWeek

根据ISO 8601标准,星期定义为星期一至星期日,编号为1-7。

int dayNumber = DayOfWeek.MONDAY.getValue() ;  // 1 = Monday, 7 = Sunday.

从ISO 8601样式转换为美式

如果你想在美国常用的一周,周日是第一个,请使用数学。计算模7然后加1。

( DayOfWeek.SUNDAY.getValue() % 7 ) + 1

像这样:

System.out.println( ( DayOfWeek.SUNDAY.getValue() % 7 ) + 1 ) ;
System.out.println( ( DayOfWeek.MONDAY.getValue() % 7 ) + 1 ) ;
System.out.println( ( DayOfWeek.TUESDAY.getValue() % 7 ) + 1 ) ;
System.out.println( ( DayOfWeek.WEDNESDAY.getValue() % 7 ) + 1 ) ;
System.out.println( ( DayOfWeek.THURSDAY.getValue() % 7 ) + 1 ) ;
System.out.println( ( DayOfWeek.FRIDAY.getValue() % 7 ) + 1 ) ;
System.out.println( ( DayOfWeek.SATURDAY.getValue() % 7 ) + 1 ) ;
  

1

     

2

     

3

     

4

     

5

     

6

     

7

你的问题是矛盾和不清楚的,所以我不确定你的目标,如果你周日 - 周六是0-6,然后使用上面的数学但不添加一个。

( DayOfWeek.SUNDAY.getValue() % 7 )  // Sunday = 0, Monday = 1 , … , Saturday = 6.

java.util.Calendar常量

虽然我绝不建议使用旧版Date / Calendar类,但为了您的信息,java.util.Calendar类定义了一系列int常量( {/ 3}} 17,而Calendar.SUNDAYdef pipeline { agent 'slave' stages { stage ('Load Groovy Script') { steps { load 'path/to/abc.groovy' } } } 的星期几为<{em}}。load<script language="JavaScript" type="text/javascript"> TrustLogo("https://www.(mywebsite).com/comodo_secure_seal_76x26_transp.png", "CL1", "none"); </script>

关于java.time

Calendar.SATURDAY框架内置于Java 8及更高版本中。这些类取代了麻烦的旧java.time日期时间类,例如legacyjava.util.Date和&amp; Calendar

现在位于SimpleDateFormatJoda-Time项目建议迁移到maintenance mode类。

要了解详情,请参阅java.time。并搜索Stack Overflow以获取许多示例和解释。规范是Oracle Tutorial

从哪里获取java.time类?

How to use ThreeTenABP…项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如ThreeTen-ExtraIntervalYearWeekYearQuarter

答案 2 :(得分:0)

public enum DayOfWeek{
    SUNDAY(0),
    MONDAY(1),
    TUESDAY(2);
}

DayofWeek day = Status.SUNDAY; System.out.println(day.name());

尝试将您的枚举安排到订单中。这可能对你有帮助

答案 3 :(得分:0)

你可以这样写:

public static int getDayOrderNumber(DayOfWeek dow)
{
    EnumMap<DayOfWeek, Integer> days = new EnumMap(DayOfWeek.class){{
        put(DayOfWeek.SUNDAY, 0);
        put(DayOfWeek.MONDAY, 1);
        ...
    }};
    return days.get(dow);
}

只做一些重构,在更合适的地方初始化地图。

答案 4 :(得分:0)

这是我写的一个简单的方法,我经常使用它:

public static int getDayOfWeekBySundayIs0(DayOfWeek day)
{
    if(day == DayOfWeek.SUNDAY)
    {
        return 0;
    }
    else
    {
        // NOTE: getValue() is starting to count from 1, and not from 0
        return  day.getValue();
    }
}