Most visited

Recently visited

Added in API level 24

DateTimePatternGenerator

public class DateTimePatternGenerator
extends Object implements Freezable<DateTimePatternGenerator>, Cloneable

java.lang.Object
   ↳ android.icu.text.DateTimePatternGenerator


该类提供灵活的日期格式模式生成,如“yy-MM-dd”。 用户可以通过添加连续的模式来建立发生器。 完成后,可以使用“骨架”进行查询,该“骨架”是一种只包含所需字段和长度的模式。 生成器将返回对应于该骨架的“最佳拟合”模式。

人们使用的主要方法是getBestPattern(String skeleton),因为通常这个类是用来自特定语言环境的数据预先构建的。 但是,发电机也可以直接从其他数据构建。

Summary

Nested classes

class DateTimePatternGenerator.PatternInfo

PatternInfo为addPattern(...)提供输出参数。

Constants

int DAY

int DAYPERIOD

int DAY_OF_WEEK_IN_MONTH

int DAY_OF_YEAR

int ERA

int FRACTIONAL_SECOND

int HOUR

int MATCH_ALL_FIELDS_LENGTH

选项掩码用于强制所有日期和时间字段的宽度。

int MATCH_HOUR_FIELD_LENGTH

用于强制小时字段宽度的选项掩码。

int MATCH_NO_OPTIONS

默认选项掩码用于 getBestPattern(String, int)replaceFieldTypes(String, String, int)

int MINUTE

int MONTH

int QUARTER

int SECOND

int WEEKDAY

int WEEK_OF_MONTH

int WEEK_OF_YEAR

int YEAR

int ZONE

Protected constructors

DateTimePatternGenerator()

仅供子类使用

Public methods

DateTimePatternGenerator addPattern(String pattern, boolean override, DateTimePatternGenerator.PatternInfo returnInfo)

向发生器添加一个模式。

Object clone()

返回此 DateTimePatternGenerator对象的副本。

DateTimePatternGenerator cloneAsThawed()

提供克隆操作。

DateTimePatternGenerator freeze()

冻结对象。

String getAppendItemFormat(int field)

Getter对应于setAppendItemFormats。

String getAppendItemName(int field)

getter对应于setAppendItemNames。

String getBaseSkeleton(String pattern)

实用程序从给定模式返回唯一的基本框架。

Set<String> getBaseSkeletons(Set<String> result)

从这个类中返回所有基础骨架的列表(以规范形式)

String getBestPattern(String skeleton, int options)

返回匹配输入框架的最佳模式。

String getBestPattern(String skeleton)

返回匹配输入框架的最佳模式。

String getDateTimeFormat()

Getter对应于setDateTimeFormat。

String getDecimal()

getter对应于setDecimal。

static DateTimePatternGenerator getEmptyInstance()

创建空的生成器,使用addPattern(...)构建

static DateTimePatternGenerator getInstance()

根据默认的 FORMAT语言环境的数据构建灵活的生成器。

static DateTimePatternGenerator getInstance(Locale locale)

根据给定语言环境的数据构建灵活的生成器。

static DateTimePatternGenerator getInstance(ULocale uLocale)

根据给定语言环境的数据构建灵活的生成器。

String getSkeleton(String pattern)

从给定模式返回唯一骨架的实用程序。

Map<StringString> getSkeletons(Map<StringString> result)

从这个类中返回所有骨架的列表(以规范形式),以及它们映射到的模式。

boolean isFrozen()

确定对象是否被冻结。

String replaceFieldTypes(String pattern, String skeleton)

调整模式的字段类型(宽度和子类型)以匹配骨架中的内容。

String replaceFieldTypes(String pattern, String skeleton, int options)

调整模式的字段类型(宽度和子类型)以匹配骨架中的内容。

void setAppendItemFormat(int field, String value)

AppendItem格式是用于在没有良好匹配的情况下附加字段的模式。

void setAppendItemName(int field, String value)

设置字段的名称,例如英文中的“era”用于ERA。

void setDateTimeFormat(String dateTimeFormat)

日期时间格式是用于组成日期和时间模式的消息格式模式。

void setDecimal(String decimal)

十进制值用于格式化秒的分数。

Inherited methods

From class java.lang.Object
From interface android.icu.util.Freezable

Constants

DAY

Added in API level 24
int DAY

常量值:7(0x00000007)

DAYPERIOD

Added in API level 24
int DAYPERIOD

常量值:10(0x0000000a)

DAY_OF_WEEK_IN_MONTH

Added in API level 24
int DAY_OF_WEEK_IN_MONTH

Constant Value: 9 (0x00000009)

DAY_OF_YEAR

Added in API level 24
int DAY_OF_YEAR

Constant Value: 8 (0x00000008)

ERA

Added in API level 24
int ERA

常量值:0(0x00000000)

FRACTIONAL_SECOND

Added in API level 24
int FRACTIONAL_SECOND

常量值:14(0x0000000e)

HOUR

Added in API level 24
int HOUR

常量值:11(0x0000000b)

MATCH_ALL_FIELDS_LENGTH

Added in API level 24
int MATCH_ALL_FIELDS_LENGTH

选项掩码用于强制所有日期和时间字段的宽度。

也可以看看:

常量值:65535(0x0000ffff)

MATCH_HOUR_FIELD_LENGTH

Added in API level 24
int MATCH_HOUR_FIELD_LENGTH

用于强制小时字段宽度的选项掩码。

也可以看看:

常量值:2048(0x00000800)

MATCH_NO_OPTIONS

Added in API level 24
int MATCH_NO_OPTIONS

默认选项掩码用于 getBestPattern(String, int)replaceFieldTypes(String, String, int)

也可以看看:

常量值:0(0x00000000)

MINUTE

Added in API level 24
int MINUTE

常量值:12(0x0000000c)

MONTH

Added in API level 24
int MONTH

常量值:3(0x00000003)

QUARTER

Added in API level 24
int QUARTER

常量值:2(0x00000002)

SECOND

Added in API level 24
int SECOND

常量值:13(0x0000000d)

WEEKDAY

Added in API level 24
int WEEKDAY

常数值:6(0x00000006)

WEEK_OF_MONTH

Added in API level 24
int WEEK_OF_MONTH

常量值:5(0x00000005)

WEEK_OF_YEAR

Added in API level 24
int WEEK_OF_YEAR

常量值:4(0x00000004)

YEAR

Added in API level 24
int YEAR

常数值:1(0x00000001)

ZONE

Added in API level 24
int ZONE

常量值:15(0x0000000f)

Protected constructors

DateTimePatternGenerator

Added in API level 24
DateTimePatternGenerator ()

仅供子类使用

Public methods

addPattern

Added in API level 24
DateTimePatternGenerator addPattern (String pattern, 
                boolean override, 
                DateTimePatternGenerator.PatternInfo returnInfo)

向发生器添加一个模式。 如果模式与现有模式具有相同的骨架,并且设置了覆盖参数,则覆盖之前的值。 否则,保留以前的值。 无论哪种情况,冲突信息都将在PatternInfo中返回。

请注意,单字段模式(如“MMM”)会自动添加,并且不需要明确添加! *

示例代码:

Date date= new GregorianCalendar(1999,9,13,23,58,59).getTime();
ULocale locale = ULocale.FRANCE;
// Create an DateTimePatternGenerator instance for the given locale
DateTimePatternGenerator gen = DateTimePatternGenerator.getInstance(locale);
SimpleDateFormat format = new SimpleDateFormat(gen.getBestPattern("MMMMddHmm"), locale);
DateTimePatternGenerator.PatternInfo returnInfo = new DateTimePatternGenerator.PatternInfo();
// Add '. von' to the existing pattern
gen.addPattern("dd'. von' MMMM", true, returnInfo);
// Apply the new pattern
format.applyPattern(gen.getBestPattern("MMMMddHmm"));
System.out.println("New Pattern for FRENCH: "+format.toPattern());
System.out.println("Date Time in new Pattern: "+format.format(date));

/** output of the sample code:
**************************************************************************************************
 New Pattern for FRENCH: dd. 'von' MMMM HH:mm
 Date Time in new Pattern: 13. von octobre 23:58

*************************************************************************************************/

Parameters
pattern String: Pattern to add.
override boolean: When existing values are to be overridden use true, otherwise use false.
returnInfo DateTimePatternGenerator.PatternInfo: Returned information.
Returns
DateTimePatternGenerator

clone

Added in API level 24
Object clone ()

返回此 DateTimePatternGenerator对象的副本。

Returns
Object A copy of this DateTimePatternGenerator object.

cloneAsThawed

Added in API level 24
DateTimePatternGenerator cloneAsThawed ()

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

Returns
DateTimePatternGenerator

freeze

Added in API level 24
DateTimePatternGenerator freeze ()

冻结对象。

Returns
DateTimePatternGenerator the object itself.

getAppendItemFormat

Added in API level 24
String getAppendItemFormat (int field)

Getter对应于setAppendItemFormats。 低于0或处于或高于TYPE_LIMIT的值是非法参数。

Parameters
field int: The index to retrieve the append item formats.
Returns
String append pattern for field

getAppendItemName

Added in API level 24
String getAppendItemName (int field)

getter对应于setAppendItemNames。 低于0或处于或高于TYPE_LIMIT的值是非法参数。

Parameters
field int: The index to get the append item name.
Returns
String name for field

getBaseSkeleton

Added in API level 24
String getBaseSkeleton (String pattern)

实用程序从给定模式返回唯一的基本框架。 这与骨架相同,只是长度差异被最小化,以便仅保留字符串和数字形式之间的差异。 例如,“MMM-dd”和“d / MMM”都会生成骨架“MMMd”(注意单个d)。

Parameters
pattern String: Input pattern, such as "dd/MMM"
Returns
String skeleton, such as "MMMdd"

getBaseSkeletons

Added in API level 24
Set<String> getBaseSkeletons (Set<String> result)

从这个类中返回所有基础骨架的列表(以规范形式)

Parameters
result Set
Returns
Set<String>

getBestPattern

Added in API level 24
String getBestPattern (String skeleton, 
                int options)

返回匹配输入框架的最佳模式。 它保证有骨架中的所有字段。

Parameters
skeleton String: The skeleton is a pattern containing only the variable fields. For example, "MMMdd" and "mmhh" are skeletons.
options int: MATCH_xxx options for forcing the length of specified fields in the returned pattern to match those in the skeleton (when this would not happen otherwise). For default behavior, use MATCH_NO_OPTIONS.
Returns
String Best pattern matching the input skeleton (and options).

getBestPattern

Added in API level 24
String getBestPattern (String skeleton)

返回匹配输入框架的最佳模式。 它保证有骨架中的所有字段。

示例代码:

final String[] skeletons = {
        "yQQQQ", // year + full name of quarter, i.e., 4th quarter 1999
        "yMMMM", // year + full name of month, i.e., October 1999
        "MMMMd", // full name of month + day of the month, i.e., October 25
        "hhmm",  // 12-hour-cycle format, i.e., 1:32 PM
        "jjmm"   // preferred hour format for the given locale, i.e., 24-hour-cycle format for fr_FR
        };
final ULocale[] locales = {
        new ULocale ("en_US"),
        new ULocale ("fr_FR"),
        new ULocale ("zh_CN"),
        };
DateTimePatternGenerator dtfg = null;
Date date= new GregorianCalendar(1999,9,13,23,58,59).getTime();
System.out.printf("%-20s%-35s%-35s%-35s\n\n", "Skeleton", "en_US", "fr_FR","zh_CN");
for (String skeleton:skeletons) {
     System.out.printf("%-20s", skeleton);
    for (ULocale locale:locales) {
        // create a DateTimePatternGenerator instance for given locale
        dtfg = DateTimePatternGenerator.getInstance(locale);
        // use getBestPattern method to get the best pattern for the given skeleton
        String pattern = dtfg.getBestPattern(skeleton);
        // Constructs a SimpleDateFormat with the best pattern generated above and the given locale
        SimpleDateFormat sdf = new SimpleDateFormat(pattern, locale);
        // Get the format of the given date
        System.out.printf("%-35s",sdf.format(date));
    }
    System.out.println("\n");
}
/** output of the sample code:
 *************************************************************************************************************
   Skeleton            en_US                              fr_FR                              zh_CN

   yQQQQ               4th quarter 1999                   4e trimestre 1999                  1999年第四季度

   yMMMM               October 1999                       octobre 1999                       1999年10月 

   MMMMd               October 13                         13 octobre                         10月13日 

   hhmm                11:58 PM                           11:58 PM                           下午11:58

   jjmm                11:58 PM                           23:58                              下午11:58

**************************************************************************************************************/
// Use DateTime.getPatternInstance to produce the same Date/Time format with predefined constant field value
final String[] dtfskeleton = {
        DateFormat.YEAR_QUARTER, // year + full name of quarter, i.e., 4th quarter 1999
        DateFormat.YEAR_MONTH,   // year + full name of month, i.e., October 1999
        DateFormat.MONTH_DAY     // full name of month + day of the month, i.e., October 25
        };
System.out.printf("%-20s%-35s%-35s%-35s\n\n", "Skeleton", "en_US", "fr_FR","zh_CN");
for (String skeleton:dtfskeleton) {
    System.out.printf("%-20s", skeleton);
    for (ULocale locale:locales) {
        // Use DateFormat.getPatternInstance to get the date/time format for the locale,
        // and apply the format to the given date
        String df=DateFormat.getPatternInstance(skeleton,locale).format(date);
        System.out.printf("%-35s",df);
    }
    System.out.println("\n");
}

/** output of the sample code:
 ************************************************************************************************************
 Skeleton            en_US                              fr_FR                              zh_CN

 yQQQQ               4th quarter 1999                   4e trimestre 1999                  1999年第四季度

 yMMMM               October 1999                       octobre 1999                       1999年10月

 MMMMd               October 13                         13 octobre                         10月13日 
 ************************************************************************************************************/

Parameters
skeleton String: The skeleton is a pattern containing only the variable fields. For example, "MMMdd" and "mmhh" are skeletons.
Returns
String Best pattern matching the input skeleton.

getDateTimeFormat

Added in API level 24
String getDateTimeFormat ()

Getter对应于setDateTimeFormat。

Returns
String pattern

getDecimal

Added in API level 24
String getDecimal ()

getter对应于setDecimal。

Returns
String string corresponding to the decimal point

getEmptyInstance

Added in API level 24
DateTimePatternGenerator getEmptyInstance ()

创建空的生成器,使用addPattern(...)构建

Returns
DateTimePatternGenerator

getInstance

Added in API level 24
DateTimePatternGenerator getInstance ()

根据默认的 FORMAT语言环境的数据构建一个灵活的生成器。

Returns
DateTimePatternGenerator

也可以看看:

getInstance

Added in API level 24
DateTimePatternGenerator getInstance (Locale locale)

根据给定语言环境的数据构建灵活的生成器。

Parameters
locale Locale: The Locale to pass.
Returns
DateTimePatternGenerator

getInstance

Added in API level 24
DateTimePatternGenerator getInstance (ULocale uLocale)

根据给定语言环境的数据构建灵活的生成器。

Parameters
uLocale ULocale: The locale to pass.
Returns
DateTimePatternGenerator

getSkeleton

Added in API level 24
String getSkeleton (String pattern)

从给定模式返回唯一骨架的实用程序。 例如,“MMM-dd”和“dd / MMM”都产生骨架“MMMdd”。

Parameters
pattern String: Input pattern, such as "dd/MMM"
Returns
String skeleton, such as "MMMdd"

getSkeletons

Added in API level 24
Map<StringString> getSkeletons (Map<StringString> result)

从这个类中返回所有骨架的列表(以规范形式),以及它们映射到的模式。

Parameters
result Map: an output Map in which to place the mapping from skeleton to pattern. If you want to see the internal order being used, supply a LinkedHashMap. If the input value is null, then a LinkedHashMap is allocated.

问题:一个替代的API将只是返回一个骨架列表,然后有一个单独的例程来从骨架到模式。

Returns
Map<StringString> the input Map containing the values.

isFrozen

Added in API level 24
boolean isFrozen ()

确定对象是否被冻结。

Returns
boolean

replaceFieldTypes

Added in API level 24
String replaceFieldTypes (String pattern, 
                String skeleton)

调整模式的字段类型(宽度和子类型)以匹配骨架中的内容。 也就是说,如果提供“dM H:m”之类的图案和“MMMMddhhmm”的骨架,则将输入图案调整为“dd-MMMM hh:mm”。 这用于内部获取输入框架的最佳匹配,但也可以在外部使用。

示例代码:

Date date= new GregorianCalendar(1999,9,13,23,58,59).getTime();
TimeZone zone = TimeZone.getTimeZone("Europe/Paris");
ULocale locale = ULocale.FRANCE;
DateTimePatternGenerator gen = DateTimePatternGenerator.getInstance(locale);
SimpleDateFormat format = new SimpleDateFormat("EEEE d MMMM y HH:mm:ss zzzz",locale);
format.setTimeZone(zone);
String pattern = format.toPattern();
System.out.println("Pattern before replacement:");
System.out.println(pattern);
System.out.println("Date/Time format in fr_FR:");
System.out.println(format.format(date));
// Replace zone "zzzz" in the pattern with "vvvv"
String newPattern = gen.replaceFieldTypes(pattern, "vvvv");
// Apply the new pattern
format.applyPattern(newPattern);
System.out.println("Pattern after replacement:");
System.out.println(newPattern);
System.out.println("Date/Time format in fr_FR:");
System.out.println(format.format(date));

/** output of the sample code:
***************************************************************************************************
 Pattern before replacement:
 EEEE d MMMM y HH:mm:ss zzzz
 Date/Time format in fr_FR:
 jeudi 14 octobre 1999 05:58:59 heure avancée d’Europe centrale
 Pattern after replacement:
 EEEE d MMMM y HH:mm:ss vvvv
 Date/Time format in fr_FR:
 jeudi 14 octobre 1999 05:58:59 heure de l’Europe centrale

**************************************************************************************************/

Parameters
pattern String: input pattern
skeleton String: For the pattern to match to.
Returns
String pattern adjusted to match the skeleton fields widths and subtypes.

replaceFieldTypes

Added in API level 24
String replaceFieldTypes (String pattern, 
                String skeleton, 
                int options)

调整模式的字段类型(宽度和子类型)以匹配骨架中的内容。 也就是说,如果提供“dM H:m”之类的图案和“MMMMddhhmm”的骨架,则将输入图案调整为“dd-MMMM hh:mm”。 这用于内部获取输入框架的最佳匹配,但也可以在外部使用。

Parameters
pattern String: input pattern
skeleton String: For the pattern to match to.
options int: MATCH_xxx options for forcing the length of specified fields in the returned pattern to match those in the skeleton (when this would not happen otherwise). For default behavior, use MATCH_NO_OPTIONS.
Returns
String pattern adjusted to match the skeleton fields widths and subtypes.

setAppendItemFormat

Added in API level 24
void setAppendItemFormat (int field, 
                String value)

AppendItem格式是用于在没有良好匹配的情况下附加字段的模式。 例如,假设输入框架是“GyyyyMMMd”,并且内部没有匹配模式,但是存在与“yyyyMMMd”匹配的模式,例如“d-MM-yyyy”。 然后使用该模式,再加上G.这两者联合的方式是使用AppendItemFormat for G(era)。 所以如果这个值是“{0},{1}”,那么最终的结果模式是“d-MM-yyyy,G”。

实际上有三个可用的变量:{0}是迄今为止的模式,{1}是我们要添加的元素,{2}是元素的名称。

这反映了CLDR数据的组织方式。

Parameters
field int: such as ERA
value String: pattern, such as "{0}, {1}"

setAppendItemName

Added in API level 24
void setAppendItemName (int field, 
                String value)

设置字段的名称,例如英文中的“era”用于ERA。 这些仅在使用相应的AppendItemFormat时使用,并且如果它包含一个{2}变量。

这反映了CLDR数据的组织方式。

Parameters
field int: Index of the append item names.
value String: The value to set the item to.

setDateTimeFormat

Added in API level 24
void setDateTimeFormat (String dateTimeFormat)

日期时间格式是用于组成日期和时间模式的消息格式模式。 默认值为“{1} {0}”,其中{1}将被日期模式替换,{0}将被时间模式替换。

当输入框架既包含日期字段又包含时间字段时使用,但添加的模式之间没有紧密匹配。 例如,假设此对象是通过添加“dd-MMM”和“hh:mm”创建的,并且其datetimeFormat是默认的“{1} {0}”。 然后,如果输入骨架是“MMMdhmm”,则没有完全匹配,因此输入骨架被分解为两个组件“MMMd”和“hmm”。 这两个骷髅有近似的匹配,所以结果与这种模式相结合,导致“d-MMM h:mm”。

Parameters
dateTimeFormat String: message format pattern, where {1} will be replaced by the date pattern and {0} will be replaced by the time pattern.

setDecimal

Added in API level 24
void setDecimal (String decimal)

十进制值用于格式化秒的分数。 如果骨架包含小数秒,那么这与小数秒一起使用。 例如,假设输入模式为“hhmmssSSSS”,内部最佳匹配模式为“H:mm:ss”,十进制字符串为“,”。 然后将结果图案修改为“H:mm:ss,SSSS”

Parameters
decimal String: The decimal to set to.

Hooray!