我想创建一个获得enum
DayOfWeek
的函数,然后将这一天的值用于其他内容。
我的问题是我无法设置(实际覆盖)返回的值。
例如:
DayOfWeek.SUNDAY.getValue(); // return 7
我想将SUNDAY
设置为0
,将MONDAY
设置为1
,依此类推......
有没有办法呢?
答案 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.
如果你想在美国常用的一周,周日是第一个,请使用数学。计算模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}} 1
为7
,而Calendar.SUNDAY
为def 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>
。
Calendar.SATURDAY
框架内置于Java 8及更高版本中。这些类取代了麻烦的旧java.time日期时间类,例如legacy,java.util.Date
和&amp; Calendar
现在位于SimpleDateFormat
的Joda-Time项目建议迁移到maintenance mode类。
要了解详情,请参阅java.time。并搜索Stack Overflow以获取许多示例和解释。规范是Oracle Tutorial。
从哪里获取java.time类?
How to use ThreeTenABP…项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如ThreeTen-Extra,Interval
,YearWeek
和YearQuarter
。
答案 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();
}
}