public class DateIntervalInfo
extends Object
implements Cloneable, Freezable<DateIntervalInfo>, Serializable
java.lang.Object | |
↳ | android.icu.text.DateIntervalInfo |
DateIntervalInfo是用于封装可本地化的日期时间间隔模式的公共类。 它由DateIntervalFormat使用。
对于大多数用户来说,DateIntervalFormat的普通使用不需要直接创建DateIntervalInfo对象。 当用户传入框架和语言环境时,创建日期间隔格式器时,DateIntervalFormat将处理它。
对于想要创建自己的日期间隔模式或想要重新设置日期间隔模式的高级用户,他们可以通过直接创建DateIntervalInfo并对其进行操作来实现。
逻辑上,间隔模式是从(skeleton,the_largest_different_calendar_field)到(date_interval_pattern)的映射。
骨架
我们支持间隔格式的日历字段是:年,月,日,星期,am-pm,小时,每小时,每分钟和秒(尽管我们目前没有特定的骨架的intervalFormat数据与秒)。 可以按以下顺序定义这些日历字段:年>月>日>上午 - 下午>小时>分钟>秒两个日历之间最大的不同日历字段是上述顺序中的第一个不同的日历字段。 例如:“2007年1月10日”和“2008年2月20日”之间最大的不同日历字段是年份。
有一组预定义的静态框架字符串。 在语言环境的资源文件中,这些预定义的骨架有预定义的间隔模式。 例如,对于en_US中的“yMMMd”骨架YEAR_ABBR_MONTH_DAY,如果date1和date2之间的最大不同日历字段为“年”,则日期间隔模式为“MMM d,yyyy - MMM d,yyyy”,例如如“2007年1月10日 - 2008年1月10日”。 如果日期1和日期2之间的最大不同日历字段为“月”,则日期间隔格式为“MMM d - MMM d,yyyy”,如“2007年1月10日 - 2007年2月10日”。 如果date1和date2之间的最大不同日历字段为“day”,则日期间隔模式为“MMM dd,yyyy”,如“2007年1月10日-20日”。对于日期骨架,年份或月份或日期不同在资源文件中定义,对于时间骨架,在资源文件中定义am / pm或hour或minute不同的区间模式。
间隔模式中有2个日期。 对于大多数语言环境,间隔模式中的第一个日期是早期日期。 可能有一个区域设置,其中间隔模式中的第一个日期是较晚的日期。 我们使用备用格式作为语言环境的默认订单。 例如,如果后备格式为“{0} - {1}”,则表示此区域设置的区间模式中的第一个日期是早期日期。 如果后备格式为“{1} - {0}”,则表示第一个日期是更晚的日期。 对于特定的间隔模式,默认顺序可以通过在间隔模式中加前缀“latestFirst:”或“earliestFirst:”来重写。 例如,如果后备格式为“{0} - {1}”,但对于骨架“yMMMd”,日期不同的时间间隔格式为“latestFirst:dd MMM yy”,这意味着默认情况下,间隔模式是较早的日期。 但对于骷髅“yMMMd”,当日子不同时,“dd MMM yy”中的第一个日期是日期。
建议创建DateIntervalFormat对象的方法是传入语言环境。 通过使用Locale参数,DateIntervalFormat对象使用给定或默认语言环境的预定义间隔模式进行初始化。
用户也可以通过提供自己的间隔模式来创建DateIntervalFormat对象。 它为电力使用提供了灵活性。
在创建DateIntervalInfo对象之后,客户端可以根据需要使用setIntervalPattern函数修改间隔模式。 目前,用户只能在以下日历字段不同时设置时间间隔模式:ERA,YEAR,MONTH,DATE,DAY_OF_MONTH,DAY_OF_WEEK,AM_PM,HOUR,HOUR_OF_DAY,MINUTE和SECOND。 不支持其他日历字段不同的时间间隔模式。
DateIntervalInfo对象是可复制的。 当客户获得一个DateIntervalInfo对象时,他们可以随意修改它。
DateIntervalInfo预计不会被分类。 日历的数据从资源包中加载。 通过ICU 4.4,格里历利亚日历仅支持日期间隔模式; ICU 4.4.1支持非格里历日历。
Nested classes |
|
---|---|
class |
DateIntervalInfo.PatternInfo PatternInfo类保存间隔模式的第一部分和第二部分,以及间隔模式是否早于优先。 |
Public constructors |
|
---|---|
DateIntervalInfo(ULocale locale) 为给定的语言环境构造DateIntervalInfo, |
|
DateIntervalInfo(Locale locale) 为给定的 |
Public methods |
|
---|---|
Object |
clone() 克隆这个对象。 |
DateIntervalInfo |
cloneAsThawed() 提供克隆操作。 |
boolean |
equals(Object a) 覆盖等于 |
DateIntervalInfo |
freeze() 冻结对象。 |
boolean |
getDefaultOrder() 获取默认订单 - 模式中的第一个日期是否为更晚的日期。 |
String |
getFallbackIntervalPattern() 获取回退间隔模式。 |
DateIntervalInfo.PatternInfo |
getIntervalPattern(String skeleton, int field) 获取给定最大不同日历字段的间隔模式。 |
int |
hashCode() 覆盖散列码 |
boolean |
isFrozen() 确定对象是否被冻结。 |
void |
setFallbackIntervalPattern(String fallbackPattern) 重新设置回退间隔模式。 |
void |
setIntervalPattern(String skeleton, int lrgDiffCalUnit, String intervalPattern) 为客户端构建间隔模式提供了一种方法。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
|
From interface android.icu.util.Freezable
|
DateIntervalInfo (ULocale locale)
为给定的语言环境构造DateIntervalInfo,
Parameters | |
---|---|
locale |
ULocale : the interval patterns are loaded from the appropriate calendar data (specified calendar or default calendar) in this locale. |
DateIntervalInfo (Locale locale)
为给定的 Locale
构造DateIntervalInfo。
Parameters | |
---|---|
locale |
Locale : the interval patterns are loaded from the appropriate calendar data (specified calendar or default calendar) in this locale. |
DateIntervalInfo cloneAsThawed ()
提供克隆操作。 任何克隆都是最初解冻的。
Returns | |
---|---|
DateIntervalInfo |
boolean equals (Object a)
覆盖等于
Parameters | |
---|---|
a |
Object : the reference object with which to compare. |
Returns | |
---|---|
boolean |
true if this object is the same as the obj argument; false otherwise. |
DateIntervalInfo freeze ()
冻结对象。
Returns | |
---|---|
DateIntervalInfo |
the object itself. |
boolean getDefaultOrder ()
获取默认订单 - 模式中的第一个日期是否为更晚的日期。 以间隔模式返回默认日期排序。 如果模式中的第一个日期为更晚日期,则为TRUE;否则为FALSE。
Returns | |
---|---|
boolean |
String getFallbackIntervalPattern ()
获取回退间隔模式。
Returns | |
---|---|
String |
fallback interval pattern |
DateIntervalInfo.PatternInfo getIntervalPattern (String skeleton, int field)
获取给定最大不同日历字段的间隔模式。
Parameters | |
---|---|
skeleton |
String : the skeleton |
field |
int : the largest different calendar field |
Returns | |
---|---|
DateIntervalInfo.PatternInfo |
interval pattern return null if interval pattern is not found. |
Throws | |
---|---|
IllegalArgumentException |
if getting interval pattern on a calendar field that is smaller than the MINIMUM_SUPPORTED_CALENDAR_FIELD |
void setFallbackIntervalPattern (String fallbackPattern)
重新设置回退间隔模式。 在构建中,默认回退模式设置为“{0} - {1}”。 以locale为参数的构造函数将设置fallback模式为locale资源文件中定义的模式。 此方法为用户提供了替换回退模式的方法。
Parameters | |
---|---|
fallbackPattern |
String : fall-back interval pattern. |
Throws | |
---|---|
UnsupportedOperationException |
if the object is frozen |
IllegalArgumentException |
if there is no pattern {0} or pattern {1} in fallbakckPattern |
void setIntervalPattern (String skeleton, int lrgDiffCalUnit, String intervalPattern)
为客户端构建间隔模式提供了一种方法。 用户可以通过提供骨架及其模式列表来构造DateIntervalInfo。
例如:
DateIntervalInfo dIntervalInfo = new DateIntervalInfo(); dIntervalInfo.setIntervalPattern("yMd", Calendar.YEAR, "'from' yyyy-M-d 'to' yyyy-M-d"); dIntervalInfo.setIntervalPattern("yMMMd", Calendar.MONTH, "'from' yyyy MMM d 'to' MMM d"); dIntervalInfo.setIntervalPattern("yMMMd", Calendar.DAY, "yyyy MMM d-d"); dIntervalInfo.setFallbackIntervalPattern("{0} ~ {1}");Restriction: Currently, users can only set interval patterns when the following calendar fields are different: ERA, YEAR, MONTH, DATE, DAY_OF_MONTH, DAY_OF_WEEK, AM_PM, HOUR, HOUR_OF_DAY, MINUTE, and SECOND. Interval patterns when other calendar fields are different are not supported.
Parameters | |
---|---|
skeleton |
String : the skeleton on which interval pattern based |
lrgDiffCalUnit |
int : the largest different calendar unit. |
intervalPattern |
String : the interval pattern on the largest different calendar unit. For example, if lrgDiffCalUnit is "year", the interval pattern for en_US when year is different could be "'from' yyyy 'to' yyyy". |
Throws | |
---|---|
IllegalArgumentException |
if setting interval pattern on a calendar field that is smaller than the MINIMUM_SUPPORTED_CALENDAR_FIELD |
UnsupportedOperationException |
if the object is frozen |