1
1
package java .time .temporal
2
2
3
3
final class ChronoField private (name : String , ordinal : Int ,
4
- _range : ValueRange , dateBased : Boolean , baseUnit : ChronoUnit ,
5
- rangeUnit : ChronoUnit ) extends Enum [ChronoField ](name, ordinal)
6
- with TemporalField {
4
+ _range : ValueRange , baseUnit : ChronoUnit , rangeUnit : ChronoUnit , flags : Int )
5
+ extends Enum [ChronoField ](name, ordinal) with TemporalField {
6
+
7
+ import ChronoField ._
7
8
8
9
// Not implemented:
9
10
// def String getDisplayName(locale: java.util.Locale)
@@ -14,9 +15,9 @@ final class ChronoField private (name: String, ordinal: Int,
14
15
15
16
def range (): ValueRange = _range
16
17
17
- def isDateBased (): Boolean = dateBased
18
+ def isDateBased (): Boolean = (flags & isDateBasedFlag) != 0
18
19
19
- def isTimeBased (): Boolean = ! dateBased
20
+ def isTimeBased (): Boolean = (flags & isTimeBasedFlag) != 0
20
21
21
22
def checkValidValue (value : Long ): Long =
22
23
_range.checkValidValue(value, this )
@@ -40,95 +41,98 @@ object ChronoField {
40
41
41
42
import ChronoUnit ._
42
43
44
+ private final val isTimeBasedFlag = 1
45
+ private final val isDateBasedFlag = 2
46
+
43
47
final val NANO_OF_SECOND = new ChronoField (" NanoOfSecond" , 0 ,
44
- ValueRange .of(0 , 999999999 ), false , NANOS , SECONDS )
48
+ ValueRange .of(0 , 999999999 ), NANOS , SECONDS , isTimeBasedFlag )
45
49
46
50
final val NANO_OF_DAY = new ChronoField (" NanoOfDay" , 1 ,
47
- ValueRange .of(0 , 86399999999999L ), false , NANOS , DAYS )
51
+ ValueRange .of(0 , 86399999999999L ), NANOS , DAYS , isTimeBasedFlag )
48
52
49
53
final val MICRO_OF_SECOND = new ChronoField (" MicroOfSecond" , 2 ,
50
- ValueRange .of(0 , 999999 ), false , MICROS , SECONDS )
54
+ ValueRange .of(0 , 999999 ), MICROS , SECONDS , isTimeBasedFlag )
51
55
52
56
final val MICRO_OF_DAY = new ChronoField (" MicroOfDay" , 3 ,
53
- ValueRange .of(0 , 86399999999L ), false , MICROS , DAYS )
57
+ ValueRange .of(0 , 86399999999L ), MICROS , DAYS , isTimeBasedFlag )
54
58
55
59
final val MILLI_OF_SECOND = new ChronoField (" MilliOfSecond" , 4 ,
56
- ValueRange .of(0 , 999 ), false , MILLIS , SECONDS )
60
+ ValueRange .of(0 , 999 ), MILLIS , SECONDS , isTimeBasedFlag )
57
61
58
62
final val MILLI_OF_DAY = new ChronoField (" MilliOfDay" , 5 ,
59
- ValueRange .of(0 , 86399999 ), false , MILLIS , DAYS )
63
+ ValueRange .of(0 , 86399999 ), MILLIS , DAYS , isTimeBasedFlag )
60
64
61
65
final val SECOND_OF_MINUTE = new ChronoField (" SecondOfMinute" , 6 ,
62
- ValueRange .of(0 , 59 ), false , SECONDS , MINUTES )
66
+ ValueRange .of(0 , 59 ), SECONDS , MINUTES , isTimeBasedFlag )
63
67
64
68
final val SECOND_OF_DAY = new ChronoField (" SecondOfDay" , 7 ,
65
- ValueRange .of(0 , 86399 ), false , SECONDS , DAYS )
69
+ ValueRange .of(0 , 86399 ), SECONDS , DAYS , isTimeBasedFlag )
66
70
67
71
final val MINUTE_OF_HOUR = new ChronoField (" MinuteOfHour" , 8 ,
68
- ValueRange .of(0 , 59 ), false , MINUTES , HOURS )
72
+ ValueRange .of(0 , 59 ), MINUTES , HOURS , isTimeBasedFlag )
69
73
70
74
final val MINUTE_OF_DAY = new ChronoField (" MinuteOfDay" , 9 ,
71
- ValueRange .of(0 , 1439 ), false , MINUTES , DAYS )
75
+ ValueRange .of(0 , 1439 ), MINUTES , DAYS , isTimeBasedFlag )
72
76
73
77
final val HOUR_OF_AMPM = new ChronoField (" HourOfAmPm" , 10 ,
74
- ValueRange .of(0 , 11 ), false , HOURS , HALF_DAYS )
78
+ ValueRange .of(0 , 11 ), HOURS , HALF_DAYS , isTimeBasedFlag )
75
79
76
80
final val CLOCK_HOUR_OF_AMPM = new ChronoField (" ClockHourOfAmPm" , 11 ,
77
- ValueRange .of(1 , 12 ), false , HOURS , HALF_DAYS )
81
+ ValueRange .of(1 , 12 ), HOURS , HALF_DAYS , isTimeBasedFlag )
78
82
79
83
final val HOUR_OF_DAY = new ChronoField (" HourOfDay" , 12 ,
80
- ValueRange .of(0 , 23 ), false , HOURS , DAYS )
84
+ ValueRange .of(0 , 23 ), HOURS , DAYS , isTimeBasedFlag )
81
85
82
86
final val CLOCK_HOUR_OF_DAY = new ChronoField (" ClockHourOfDay" , 13 ,
83
- ValueRange .of(1 , 24 ), false , HOURS , DAYS )
87
+ ValueRange .of(1 , 24 ), HOURS , DAYS , isTimeBasedFlag )
84
88
85
89
final val AMPM_OF_DAY = new ChronoField (" AmPmOfDay" , 14 ,
86
- ValueRange .of(0 , 1 ), false , HALF_DAYS , DAYS )
90
+ ValueRange .of(0 , 1 ), HALF_DAYS , DAYS , isTimeBasedFlag )
87
91
88
92
final val DAY_OF_WEEK = new ChronoField (" DayOfWeek" , 15 ,
89
- ValueRange .of(1 , 7 ), true , DAYS , WEEKS )
93
+ ValueRange .of(1 , 7 ), DAYS , WEEKS , isDateBasedFlag )
90
94
91
95
final val ALIGNED_DAY_OF_WEEK_IN_MONTH = new ChronoField (" AlignedDayOfWeekInMonth" ,
92
- 16 , ValueRange .of(1 , 7 ), true , DAYS , WEEKS )
96
+ 16 , ValueRange .of(1 , 7 ), DAYS , WEEKS , isDateBasedFlag )
93
97
94
98
final val ALIGNED_DAY_OF_WEEK_IN_YEAR = new ChronoField (" AlignedDayOfWeekInYear" ,
95
- 17 , ValueRange .of(1 , 7 ), true , DAYS , WEEKS )
99
+ 17 , ValueRange .of(1 , 7 ), DAYS , WEEKS , isDateBasedFlag )
96
100
97
101
final val DAY_OF_MONTH = new ChronoField (" DayOfMonth" , 18 ,
98
- ValueRange .of(1 , 28 , 31 ), true , DAYS , MONTHS )
102
+ ValueRange .of(1 , 28 , 31 ), DAYS , MONTHS , isDateBasedFlag )
99
103
100
104
final val DAY_OF_YEAR = new ChronoField (" DayOfYear" , 19 ,
101
- ValueRange .of(1 , 365 , 366 ), true , DAYS , YEARS )
105
+ ValueRange .of(1 , 365 , 366 ), DAYS , YEARS , isDateBasedFlag )
102
106
103
107
final val EPOCH_DAY = new ChronoField (" EpochDay" , 20 ,
104
- ValueRange .of(- 365249999634L , 365249999634L ), true , DAYS , FOREVER )
108
+ ValueRange .of(- 365249999634L , 365249999634L ), DAYS , FOREVER , isDateBasedFlag )
105
109
106
110
final val ALIGNED_WEEK_OF_MONTH = new ChronoField (" AlignedWeekOfMonth" , 21 ,
107
- ValueRange .of(1 , 4 , 5 ), true , WEEKS , MONTHS )
111
+ ValueRange .of(1 , 4 , 5 ), WEEKS , MONTHS , isDateBasedFlag )
108
112
109
113
final val ALIGNED_WEEK_OF_YEAR = new ChronoField (" AlignedWeekOfYear" , 22 ,
110
- ValueRange .of(1 , 53 ), true , WEEKS , YEARS )
114
+ ValueRange .of(1 , 53 ), WEEKS , YEARS , isDateBasedFlag )
111
115
112
116
final val MONTH_OF_YEAR = new ChronoField (" MonthOfYear" , 23 ,
113
- ValueRange .of(1 , 12 ), true , MONTHS , YEARS )
117
+ ValueRange .of(1 , 12 ), MONTHS , YEARS , isDateBasedFlag )
114
118
115
119
final val PROLEPTIC_MONTH = new ChronoField (" ProlepticMonth" , 24 ,
116
- ValueRange .of(- 11999999988L , 11999999999L ), true , MONTHS , FOREVER )
120
+ ValueRange .of(- 11999999988L , 11999999999L ), MONTHS , FOREVER , isDateBasedFlag )
117
121
118
122
final val YEAR_OF_ERA = new ChronoField (" YearOfEra" , 25 ,
119
- ValueRange .of(1 , 999999999 , 1000000000 ), true , YEARS , ERAS )
123
+ ValueRange .of(1 , 999999999 , 1000000000 ), YEARS , ERAS , isDateBasedFlag )
120
124
121
125
final val YEAR = new ChronoField (" Year" , 26 ,
122
- ValueRange .of(- 999999999 , 999999999 ), true , YEARS , FOREVER )
126
+ ValueRange .of(- 999999999 , 999999999 ), YEARS , FOREVER , isDateBasedFlag )
123
127
124
- final val ERA = new ChronoField (" Era" , 27 , ValueRange .of(0 , 1 ), true , ERAS ,
125
- FOREVER )
128
+ final val ERA = new ChronoField (" Era" , 27 , ValueRange .of(0 , 1 ), ERAS , FOREVER ,
129
+ isDateBasedFlag )
126
130
127
131
final val INSTANT_SECONDS = new ChronoField (" InstantSeconds" , 28 ,
128
- ValueRange .of(Long .MinValue , Long .MaxValue ), false , SECONDS , FOREVER )
132
+ ValueRange .of(Long .MinValue , Long .MaxValue ), SECONDS , FOREVER , 0 )
129
133
130
134
final val OFFSET_SECONDS = new ChronoField (" OffsetSeconds" , 29 ,
131
- ValueRange .of(- 64800 , 64800 ), false , SECONDS , FOREVER )
135
+ ValueRange .of(- 64800 , 64800 ), SECONDS , FOREVER , 0 )
132
136
133
137
private val fields = Array (NANO_OF_SECOND , NANO_OF_DAY , MICRO_OF_SECOND ,
134
138
MICRO_OF_DAY , MILLI_OF_SECOND , MILLI_OF_DAY , SECOND_OF_MINUTE ,
0 commit comments