public static class Calendar.Builder extends Object
Calendar.Builder用于创建一个Calendar从各个日期-时间参数。
有两种方法可以将Calendar设置为日期时间值。 一个是即时参数设置到毫秒从偏移Epoch 。 另一个是将各个字段参数(如YEAR )设置为其所需的值。 这两种方式不能混合。 尝试同时设置即时和单个字段将导致抛出IllegalStateException 。 但是,允许覆盖即时或现场参数的先前值。
如果没有足够的字段参数来确定日期和/或时间,则在构建Calendar时将使用日历特定的默认值。 例如,如果公历中没有给出YEAR的价值,那么将使用1970年。 如果现场参数有冲突,则应用resolution rules 。 因此,现场设置的顺序很重要。
除了日期时间参数,该locale , time zone , week definition和leniency mode参数进行设置。
例子
以下是示例用法。 示例代码假定静态导入Calendar常量。
以下代码生成一个Calendar与日期2012-12-31(格里高利),因为星期一是一周的第一天与ISO 8601 compatible week parameters 。
Calendar cal = new Calendar.Builder().setCalendarType("iso8601")
.setWeekDate(2013, 1, MONDAY).build();
以下代码生成日期为1989-01-08(Gregorian)的日语Calendar ,假设默认的ERA是当天开始的平成 。
Calendar cal = new Calendar.Builder().setCalendarType("japanese")
.setFields(YEAR, 1, DAY_OF_YEAR, 1).build();
Calendar.getInstance(TimeZone, Locale) ,
Calendar.fields
| Constructor and Description |
|---|
Builder()
构造一个
Calendar.Builder 。
|
| Modifier and Type | Method and Description |
|---|---|
Calendar |
build()
返回一个由setter方法设置的
Calendar构建的Calendar。
|
Calendar.Builder |
set(int field, int value)
将
field参数设置为给定的
value 。
|
Calendar.Builder |
setCalendarType(String type)
将日历类型参数设置为给定的
type 。
|
Calendar.Builder |
setDate(int year, int month, int dayOfMonth)
将日期字段参数设置
year
month和
dayOfMonth给出的值。
|
Calendar.Builder |
setFields(int... fieldValuePairs)
设置现场参数给出它们的值
fieldValuePairs是对的领域和它的价值。
|
Calendar.Builder |
setInstant(Date instant)
设置即时参数设置为 instant由给定值Date 。
|
Calendar.Builder |
setInstant(long instant)
设置即时参数给定
instant值是一毫秒的偏移
the Epoch 。
|
Calendar.Builder |
setLenient(boolean lenient)
设置宽松模式参数由给定的值
lenient 。
|
Calendar.Builder |
setLocale(Locale locale)
将区域设置参数设置为给定的
locale 。
|
Calendar.Builder |
setTimeOfDay(int hourOfDay, int minute, int second)
将时间字段参数设置
hourOfDay
minute和
second给出的值。
|
Calendar.Builder |
setTimeOfDay(int hourOfDay, int minute, int second, int millis)
设置由给定的一天领域参数值时
hourOfDay ,
minute ,
second和
millis 。
|
Calendar.Builder |
setTimeZone(TimeZone zone)
将时区参数设置为给定的
zone 。
|
Calendar.Builder |
setWeekDate(int weekYear, int weekOfYear, int dayOfWeek)
将基于周的日期参数设置为给定日期说明符 - 周年,年周和星期几的值。
|
Calendar.Builder |
setWeekDefinition(int firstDayOfWeek, int minimalDaysInFirstWeek)
|
public Calendar.Builder setInstant(long instant)
instant值是一毫秒的偏移
the Epoch 。
instant - 距离时代的毫秒偏移量
Calendar.Builder
IllegalStateException - 是否已经设置了任何字段参数
Calendar.setTime(Date) ,
Calendar.setTimeInMillis(long) ,
Calendar.time
public Calendar.Builder setInstant(Date instant)
instant由给定值Date 。
此方法相当于调用setInstant(instant.getTime()) 。
instant - 一个
Date代表距离时代的毫秒偏移量
Calendar.Builder
NullPointerException - 如果
instant是
null
IllegalStateException - 如果已经设置了任何字段参数
Calendar.setTime(Date) ,
Calendar.setTimeInMillis(long) ,
Calendar.time
public Calendar.Builder set(int field, int value)
field参数设置为给定的value 。
field是一个指数为Calendar.fields ,如DAY_OF_MONTH 。
此方法不执行字段值验证。
任何超出范围的值都是在宽松模式下进行归一化或在构建Calendar时以非宽松模式检测为无效值。
field -
Calendar字段的索引
value - 字段值
Calendar.Builder
IllegalArgumentException - 如果
field无效
IllegalStateException - 如果即时值已经设置,或者字段设置过多(约
Integer.MAX_VALUE )次。
Calendar.set(int, int)
public Calendar.Builder setFields(int... fieldValuePairs)
fieldValuePairs是对的领域和它的价值。
例如,
setFeilds(Calendar.YEAR, 2013,
Calendar.MONTH, Calendar.DECEMBER,
Calendar.DAY_OF_MONTH, 23);
相当于以下set电话的顺序:
set(Calendar.YEAR, 2013)
.set(Calendar.MONTH, Calendar.DECEMBER)
.set(Calendar.DAY_OF_MONTH, 23);
fieldValuePairs - 字段值对
Calendar.Builder
NullPointerException - 如果
fieldValuePairs是
null
IllegalArgumentException - 如果任何字段无效,或者如果
fieldValuePairs.length是奇数。
IllegalStateException - 如果即时值已设置,或者字段设置过多(约
Integer.MAX_VALUE )次。
public Calendar.Builder setDate(int year, int month, int dayOfMonth)
year month和dayOfMonth给出的值。
此方法相当于调用:
setFields(Calendar.YEAR, year,
Calendar.MONTH, month,
Calendar.DAY_OF_MONTH, dayOfMonth);
year -
YEAR的价值
month -
MONTH值(月份编号为
0 )。
dayOfMonth -
DAY_OF_MONTH的价值
Calendar.Builder
public Calendar.Builder setTimeOfDay(int hourOfDay, int minute, int second)
hourOfDay minute和second给出的值。
此方法相当于调用:
setTimeOfDay(hourOfDay, minute, second, 0);
hourOfDay -
HOUR_OF_DAY的价值(24小时制)
minute -
MINUTE的价值
second -
SECOND的价值
Calendar.Builder
public Calendar.Builder setTimeOfDay(int hourOfDay, int minute, int second, int millis)
hourOfDay , minute , second和millis 。
此方法相当于调用:
setFields(Calendar.HOUR_OF_DAY, hourOfDay,
Calendar.MINUTE, minute,
Calendar.SECOND, second,
Calendar.MILLISECOND, millis);
hourOfDay -
HOUR_OF_DAY价值(24小时制)
minute -
MINUTE的价值
second -
SECOND的价值
millis -
MILLISECOND的价值
Calendar.Builder
public Calendar.Builder setWeekDate(int weekYear, int weekOfYear, int dayOfWeek)
如果指定的日历不支持周日期, build方法将抛出IllegalArgumentException 。
weekYear - 周年
weekOfYear - 周数基于
weekYear
dayOfWeek - 星期几值:
DAY_OF_WEEK字段的
常量之一:
SUNDAY ,...,
SATURDAY 。
Calendar.Builder
Calendar.setWeekDate(int, int, int) ,
Calendar.isWeekDateSupported()
public Calendar.Builder setTimeZone(TimeZone zone)
zone - TimeZone
Calendar.Builder
NullPointerException - 如果
zone是
null
Calendar.setTimeZone(TimeZone)
public Calendar.Builder setLenient(boolean lenient)
lenient 。
如果没有给出这个Calendar.Builder宽松参数,那么在build方法中将使用宽大的模式。
lenient - true宽松模式;
false用于非宽松模式
Calendar.Builder
Calendar.setLenient(boolean)
public Calendar.Builder setCalendarType(String type)
type 。
通过这种方法给出的日历型拥有由给定任何明示或暗示的日历类型优先locale 。
除了Calendar.getAvailableCalendarTypes方法返回的可用日历类型外 , "gregorian"和"gregory"可以使用"iso8601"作为别名。
type - 日历类型
Calendar.Builder
NullPointerException - 如果
type是
null
IllegalArgumentException - 如果
type未知
IllegalStateException - 如果已经设置了其他日历类型
Calendar.getCalendarType() ,
Calendar.getAvailableCalendarTypes()
public Calendar.Builder setLocale(Locale locale)
locale 。
如果没有提供这个Calendar.Builder区域设置, Locale.Category.FORMAT的default Locale将被使用。
如果没有通过调用setCalendarType方法明确给出日历类型,则使用Locale值来确定要构建的Calendar类型。
如果没有通过调用setWeekDefinition方法明确给出周定义参数,则使用Locale的默认值。
locale - Locale
Calendar.Builder
NullPointerException - 如果
locale是
null
Calendar.getInstance(Locale)
public Calendar.Builder setWeekDefinition(int firstDayOfWeek, int minimalDaysInFirstWeek)
firstDayOfWeek和minimalDaysInFirstWeek给出的值,用于确定一年中的first week 。
通过这种方法给出的参数优先于由给定的默认值locale 。
firstDayOfWeek - 一周的第一天;
Calendar.SUNDAY到Calendar.SATURDAY之一
minimalDaysInFirstWeek - 第一周最少天数(1..7)
Calendar.Builder
IllegalArgumentException - 如果
firstDayOfWeek或
minimalDaysInFirstWeek无效
Calendar.getFirstDayOfWeek() ,
Calendar.getMinimalDaysInFirstWeek()
public Calendar build()
Calendar构建的Calendar。
由setCalendarType方法或locale给出的日历类型用于确定要创建的Calendar 。
如果没有显示明确的日历类型,则会创建语言环境的默认日历。
如果日历类型是"iso8601" ,则GregorianCalendar的Gregorian change date设置为Date(Long.MIN_VALUE) 作为可疑公历。 其星期定义参数也设置为compatible with the ISO 8601 standard 。 需要注意的是getCalendarType一个的方法GregorianCalendar与创建"iso8601"回报"gregory" 。
如果尚未明确给出这些参数,则默认值用于区域设置和时区。
任何超出范围的字段值都是在宽松模式下进行归一化或在非宽松模式下被检测为无效值。
Calendar内置的这个
Calendar.Builder
IllegalArgumentException - 如果日历类型未知,或者如果在非宽松模式下给出了无效的字段值,或者如果给出不支持周日期的日历类型的周日期。
Calendar.getInstance(TimeZone, Locale),
Locale.getDefault(Locale.Category),
TimeZone.getDefault()
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.