本篇文章为你整理了SimpleDateFormat (Java Platform SE 8 )()的详细内容,包含有 SimpleDateFormat (Java Platform SE 8 ),希望能帮助你了解 SimpleDateFormat (Java Platform SE 8 )。
public class SimpleDateFormat
extends DateFormat
SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期。
它允许格式化(日期文本),解析(文本日期)和归一化。
SimpleDateFormat允许您从选择日期时间格式化的任何用户定义的模式开始。 不过,建议您创建一个日期-时间格式有两种getTimeInstance , getDateInstance ,或getDateTimeInstance在DateFormat 。 这些类方法中的每一个都可以返回使用默认格式模式初始化的日期/时间格式化程序。 您可以根据需要使用applyPattern方法修改格式模式。 有关使用这些方法的更多信息,请参见DateFormat 。
日期和时间模式
日期和时间格式由日期和时间模式字符串指定。 在日期和时间模式字符串中,从A到Z和从a到z的非引号的字母被解释为表示日期或时间字符串的组件的模式字母。 可以使用单引号( )引用文本,以避免解释。 ""代表单引号。 所有其他字符不被解释; 在格式化过程中,它们只是复制到输出字符串中,或者在解析过程中与输入字符串匹配。
定义了以下图案字母(所有其他字符从A到Z和从a到z被保留):
Text:对于格式化,如果模式字母的数量是4以上,则使用完整的形式; 否则,如果有的话,使用简短或缩写形式。 对于解析,两种形式都是接受的,与模式字母的数量无关。
Number:对于格式化,模式字母的数量是最小位数,而较短的数字将零填充到此数量。 对于解析,模式字母的数量将被忽略,除非需要分隔两个相邻的字段。
Year:如果格式化程序的Calendar是公历,则应用以下规则。
对于格式化,如果模式字母数为2,那么年份将被截断为2位数; 否则被解释为number 。
对于解析,如果模式字母的数量大于2,则年份将按字面解释,而不管数字的数量。 所以使用“MM / dd / yyyy”模式,“01/11/12”解析到公元12年1月11日
为了使用缩写年份模式(“y”或“yy”)进行解析, SimpleDateFormat必须解释相对于某个世纪的缩写年份。 它是通过将日期调整为在创建SimpleDateFormat实例之后的80年之前和20年之后进行的。 例如,使用1997年1月1日创建的“MM / dd / yy”模式和SimpleDateFormat实例,字符串“01/11/12”将被解释为2012年1月11日,而字符串“05/04 / 64“将被解释为1964年5月4日。在解析期间,只有由Character.isDigit(char)定义的两个数字组成的字符串将被解析为默认世纪。 任何其他数字字符串,例如一位数字字符串,三位或三位以上数字字符串,或两位数字字符串(不全部为数字)(例如“-1”),均按字面解释。 所以“01/02/3”或“01/02/003”的解析方式与公元3年1月2日相同。 同样,“01/02 / -3”在公元前4年1月2日被解析。
否则,将应用日历系统特定的表单。 对于格式化和解析两者,如果模式字母数为4以上,则使用特定日历long form 。 否则,使用一个特定日历short or abbreviated form 。
如果周年Y被指定,并且calendar不支持任何week years ,则使用日历年( y )。 可以通过致电getCalendar()测试周年的支持。 isWeekDateSupported() 。
Month:如果模式字母数为3以上,则该月份被解释为text ; 否则,它被解释为number 。
字母M产生上下文相关的月份名称,例如嵌入的名称形式。 如果DateFormatSymbols已经与构造明确设置SimpleDateFormat(String, DateFormatSymbols)或方法setDateFormatSymbols(DateFormatSymbols) ,由给定月份名称DateFormatSymbols被使用。
L字母生成独立形式的月份名称。
General time zone:如果他们有姓名,时区将被解释为text 。 对于表示GMT偏移值的时区,使用以下语法:
GMTOffsetTimeZone:
GMT Sign Hours : Minutes
Sign: one of
Hours:
Digit
Digit Digit
Minutes:
Digit Digit
Digit: one of
0 1 2 3 4 5 6 7 8 9
小时数必须在0到23之间, 分钟必须介于00和59之间。格式不区分大小写,数字必须取自Unicode标准的基本拉丁方块。 为了解析, RFC 822 time zones也被接受。
RFC 822 time zone:对于格式化,使用RFC 822 4位数时区格式:
RFC822TimeZone:
Sign TwoDigitHours Minutes
TwoDigitHours:
Digit Digit
TwoDigitHours必须介于00和23之间。其他定义与general time zones相同 。 为了解析, general time zones也被接受。
ISO 8601 Time zone:模式字母的数量指定格式和解析的格式如下:
ISO8601TimeZone:
OneLetterISO8601TimeZone
TwoLetterISO8601TimeZone
ThreeLetterISO8601TimeZone
OneLetterISO8601TimeZone:
Sign TwoDigitHours
TwoLetterISO8601TimeZone:
Sign TwoDigitHours Minutes
ThreeLetterISO8601TimeZone:
Sign TwoDigitHours : Minutes
Z
其他定义与general time zones或RFC 822 time zones相同 。 对于格式化,如果GMT的偏移值为0,则生成"Z" 。 如果模式字母的数量为1,则忽略小时数。 例如,如果模式为"X" ,时区为"GMT+05:30" ,则生成"+05" 。
为了解析, "Z"被解析为UTC时区指示符。 General time zones 不被接受。
如果模式字母的数目是4或更多, IllegalArgumentException被构建时抛出SimpleDateFormat或applying a pattern 。
SimpleDateFormat还支持本地化的日期和时间模式字符串。
在这些字符串中,上述的图案字母可以被替换为其他与区域相关的图案字母。
SimpleDateFormat不处理除图案字母之外的文本的本地化;
这取决于课堂的客户。
以下示例显示如何在美国地区中解释日期和时间模式。
给定的日期和时间是2001-07-04 12:08:56当地时间在美国太平洋时间时区。
Synchronization
日期格式不同步。 建议为每个线程创建单独的格式实例。 如果多个线程同时访问格式,则必须在外部进行同步。
构造方法详细信息
SimpleDateFormat
publicSimpleDateFormat()
构造一个SimpleDateFormat使用默认模式和日期格式符号为默认的FORMAT区域设置。
注意:此构造函数可能不支持所有区域设置。
要全面覆盖,请使用DateFormat类中的工厂方法。
SimpleDateFormat
publicSimpleDateFormat(Stringpattern)
使用给定模式SimpleDateFormat并使用默认的FORMAT语言环境的默认日期格式符号。
注意:此构造函数可能不支持所有区域设置。
要全面覆盖,请使用DateFormat类中的工厂方法。
这相当于调用SimpleDateFormat(pattern, Locale.getDefault(Locale.Category.FORMAT)) 。
SimpleDateFormat
publicSimpleDateFormat(Stringpattern,
DateFormatSymbolsformatSymbols)
使用给定的模式和日期格式符号构造一个
SimpleDateFormat 。
get2DigitYearStart
publicDateget2DigitYearStart()
返回100年期间的开始日期,2位数年份被解释为在内。
formatToCharacterIterator
publicAttributedCharacterIteratorformatToCharacterIterator(Objectobj)
格式化一个对象,生成一个AttributedCharacterIterator 。
您可以使用返回的AttributedCharacterIterator构建生成的字符串,以及确定有关生成的字符串的信息。
AttributedCharacterIterator的每个属性的关键将是类型的DateFormat.Field ,与相应的属性值是一样的属性键。
parse
publicDateparse(Stringtext,
ParsePositionpos)
从字符串中解析文本以产生一个Date 。
该方法尝试从pos给出的索引开始解析文本。 如果解析成功,那么pos的索引将在使用最后一个字符之后更新为索引(解析不一定使用字符串末尾的所有字符),并返回解析的日期。 更新的pos可用于指示下一次调用此方法的起始点。 如果发生错误,则pos的索引不改变, pos的错误索引设置为发生错误的pos的索引,返回null。
这个解析操作使用calendar来生成一个Date 。 在解析之前,所有calendar的日期时间字段为cleared ,日期时间字段的默认值为calendar用于任何缺少的日期时间信息。 例如,被分析的年份值Date是1970年GregorianCalendar如果没有年份值从解析操作说明。 所述TimeZone值可以根据给定的模式和在时区值被覆盖, text 。 任何TimeZone先前已通过调用设定值setTimeZone可能需要恢复的进一步行动。
toPattern
publicStringtoPattern()
返回描述此日期格式的模式字符串。
toLocalizedPattern
publicStringtoLocalizedPattern()
返回描述此日期格式的本地化模式字符串。
applyPattern
publicvoidapplyPattern(Stringpattern)
将给定的模式字符串应用于此日期格式。
applyLocalizedPattern
publicvoidapplyLocalizedPattern(Stringpattern)
将给定的本地化模式字符串应用于此日期格式。
getDateFormatSymbols
publicDateFormatSymbolsgetDateFormatSymbols()
获取此日期格式的日期和时间格式符号的副本。
setDateFormatSymbols
publicvoidsetDateFormatSymbols(DateFormatSymbolsnewFormatSymbols)
设置此日期格式的日期和时间格式符号。
clone
publicObjectclone()
创建一个这个SimpleDateFormat的副本。
这也克隆了格式的日期格式符号。
equals
publicbooleanequals(Objectobj)
将给定的对象与此
SimpleDateFormat进行比较以获得相等性。
以上就是SimpleDateFormat (Java Platform SE 8 )()的详细内容,想要了解更多 SimpleDateFormat (Java Platform SE 8 )的内容,请持续关注盛行IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。