Most visited

Recently visited

Added in API level 24

DateIntervalInfo

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)的映射。

骨架

  1. only keeps the field pattern letter and ignores all other parts in a pattern, such as space, punctuations, and string literals.
  2. hides the order of fields.
  3. might hide a field's pattern letter length. For those non-digit calendar fields, the pattern letter length is important, such as MMM, MMMM, and MMMMM; EEE and EEEE, and the field's pattern letter length is honored. For the digit calendar fields, such as M or MM, d or dd, yy or yyyy, the field pattern length is ignored and the best match, which is defined in date time patterns, will be returned without honor the field pattern letter length in skeleton.

我们支持间隔格式的日历字段是:年,月,日,星期,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支持非格里历日历。

Summary

Nested classes

class DateIntervalInfo.PatternInfo

PatternInfo类保存间隔模式的第一部分和第二部分,以及间隔模式是否早于优先。

Public constructors

DateIntervalInfo(ULocale locale)

为给定的语言环境构造DateIntervalInfo,

DateIntervalInfo(Locale locale)

为给定的 Locale构造DateIntervalInfo。

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

Public constructors

DateIntervalInfo

Added in API level 24
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

Added in API level 24
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.

Public methods

clone

Added in API level 24
Object clone ()

克隆这个对象。

Returns
Object a copy of the object

cloneAsThawed

Added in API level 24
DateIntervalInfo cloneAsThawed ()

提供克隆操作。 任何克隆都是最初解冻的。

Returns
DateIntervalInfo

equals

Added in API level 24
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.

freeze

Added in API level 24
DateIntervalInfo freeze ()

冻结对象。

Returns
DateIntervalInfo the object itself.

getDefaultOrder

Added in API level 24
boolean getDefaultOrder ()

获取默认订单 - 模式中的第一个日期是否为更晚的日期。 以间隔模式返回默认日期排序。 如果模式中的第一个日期为更晚日期,则为TRUE;否则为FALSE。

Returns
boolean

getFallbackIntervalPattern

Added in API level 24
String getFallbackIntervalPattern ()

获取回退间隔模式。

Returns
String fallback interval pattern

getIntervalPattern

Added in API level 24
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

hashCode

Added in API level 24
int hashCode ()

覆盖散列码

Returns
int a hash code value for this object.

isFrozen

Added in API level 24
boolean isFrozen ()

确定对象是否被冻结。

Returns
boolean

setFallbackIntervalPattern

Added in API level 24
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

setIntervalPattern

Added in API level 24
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

Hooray!