java.text
Class SimpleDateFormat
java.lang.Object
java.text.Format
java.text.DateFormat
java.text.SimpleDateFormat
public class SimpleDateFormat
SimpleDateFormat
is a concrete class for formatting and parsing dates in a locale-sensitive manner. It allows for formatting (date -> text), parsing (text -> date), and normalization.
SimpleDateFormat
allows you to start by choosing any user-defined patterns for date-time formatting. However, you are encouraged to create a date-time formatter with either getTimeInstance
, getDateInstance
, or getDateTimeInstance
in DateFormat
. Each of these class methods can return a date/time formatter initialized with a default format pattern. You may modify the format pattern using the applyPattern
methods as desired. For more information on using these methods, see DateFormat
.
Date and Time Patterns
Date and time formats are specified by date and time pattern strings. Within date and time pattern strings, unquoted letters from 'A'
to 'Z'
and from 'a'
to'z'
are interpreted as pattern letters representing the components of a date or time string. Text can be quoted using single quotes ('
) to avoid interpretation. "''"
represents a single quote. All other characters are not interpreted; they're simply copied into the output string during formatting or matched against the input string during parsing.
The following pattern letters are defined (all other characters from 'A'
to 'Z'
and from 'a'
to 'z'
are reserved):
Letter Date or Time Component Presentation Examples G
Era designator Text AD
y
Year Year 1996
;96
M
Month in year Month July
;Jul
;07
w
Week in year Number 27
W
Week in month Number 2
D
Day in year Number 189
d
Day in month Number 10
F
Day of week in month Number 2
E
Day in week Text Tuesday
;Tue
a
Am/pm marker Text PM
H
Hour in day (0-23) Number 0
k
Hour in day (1-24) Number 24
K
Hour in am/pm (0-11) Number 0
h
Hour in am/pm (1-12) Number 12
m
Minute in hour Number 30
s
Second in minute Number 55
S
Millisecond Number 978
z
Time zone General time zone Pacific Standard Time
;PST
;GMT-08:00
Z
Time zone RFC 822 time zone -0800
Pattern letters are usually repeated, as their number determines the exact presentation:
- Text: For formatting, if the number of pattern letters is 4 or more, the full form is used; otherwise a short or abbreviated form is used if available. For parsing, both forms are accepted, independent of the number of pattern letters.
- Number: For formatting, the number of pattern letters is the minimum number of digits, and shorter numbers are zero-padded to this amount. For parsing, the number of pattern letters is ignored unless it's needed to separate two adjacent fields.
-
Year: If the formatter's
Calendar
is the Gregorian calendar, the following rules are applied.- For formatting, if the number of pattern letters is 2, the year is truncated to 2 digits; otherwise it is interpreted as a number.
- For parsing, if the number of pattern letters is more than 2, the year is interpreted literally, regardless of the number of digits. So using the pattern "MM/dd/yyyy", "01/11/12" parses to Jan 11, 12 A.D.
- For parsing with the abbreviated year pattern ("y" or "yy"),
SimpleDateFormat
must interpret the abbreviated year relative to some century. It does this by adjusting dates to be within 80 years before and 20 years after the time theSimpleDateFormat
instance is created. For example, using a pattern of "MM/dd/yy" and aSimpleDateFormat
instance created on Jan 1, 1997, the string "01/11/12" would be interpreted as Jan 11, 2012 while the string "05/04/64" would be interpreted as May 4, 1964. During parsing, only strings consisting of exactly two digits, as defined byCharacter.isDigit(char)
, will be parsed into the default century. Any other numeric string, such as a one digit string, a three or more digit string, or a two digit string that isn't all digits (for example, "-1"), is interpreted literally. So "01/02/3" or "01/02/003" are parsed, using the same pattern, as Jan 2, 3 AD. Likewise, "01/02/-3" is parsed as Jan 2, 4 BC.
- Month: If the number of pattern letters is 3 or more, the month is interpreted as text; otherwise, it is interpreted as a number.
-
General time zone: Time zones are interpreted as text if they have names. For time zones representing a GMT offset value, the following syntax is used:
GMTOffsetTimeZone:
Hours must be between 0 and 23, and Minutes must be between 00 and 59. The format is locale independent and digits must be taken from the Basic Latin block of the Unicode standard.GMT
Sign Hours:
Minutes Sign: one of+ -
Hours: Digit Digit Digit Minutes: Digit Digit Digit: one of0 1 2 3 4 5 6 7 8 9
For parsing, RFC 822 time zones are also accepted.
-
RFC 822 time zone: For formatting, the RFC 822 4-digit time zone format is used:
RFC822TimeZone: Sign TwoDigitHours Minutes TwoDigitHours: Digit Digit
TwoDigitHours must be between 00 and 23. Other definitions are as for general time zones.For parsing, general time zones are also accepted.
SimpleDateFormat
also supports localized date and time pattern strings. In these strings, the pattern letters described above may be replaced with other, locale dependent, pattern letters. SimpleDateFormat
does not deal with the localization of text other than the pattern letters; that's up to the client of the class.
Examples
The following examples show how date and time patterns are interpreted in the U.S. locale. The given date and time are 2001-07-04 12:08:56 local time in the U.S. Pacific Time time zone.
Date and Time Pattern Result "yyyy.MM.dd G 'at' HH:mm:ss z"
2001.07.04 AD at 12:08:56 PDT
"EEE, MMM d, ''yy"
Wed, Jul 4, '01
"h:mm a"
12:08 PM
"hh 'o''clock' a, zzzz"
12 o'clock PM, Pacific Daylight Time
"K:mm a, z"
0:08 PM, PDT
"yyyyy.MMMMM.dd GGG hh:mm aaa"
02001.July.04 AD 12:08 PM
"EEE, d MMM yyyy HH:mm:ss Z"
Wed, 4 Jul 2001 12:08:56 -0700
"yyMMddHHmmssZ"
010704120856-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"
2001-07-04T12:08:56.235-0700
Synchronization
Date formats are not synchronized. It is recommended to create separate format instances for each thread. If multiple threads access a format concurrently, it must be synchronized externally.
字母 日期或时间元素 表示 示例 G Era 标志符 Text AD y 年 Year 1996; 96 M 年中的月份 Month July; Jul; 07 w 年中的周数 Number 27 W 月份中的周数 Number 2 D 年中的天数 Number 189 d 月份中的天数 Number 10 F 月份中的星期 Number 2 E 星期中的天数 Text Tuesday; Tue a Am/pm 标记 Text PM H 一天中的小时数(0-23) Number 0 k 一天中的小时数(1-24) Number 24 K am/pm 中的小时数(0-11) Number 0 h am/pm 中的小时数(1-12) Number 12 m 小时中的分钟数 Number 30 s 分钟中的秒数 Number 55 S 毫秒数 Number 978 z 时区 General time zone Pacific Standard Time; PST; GMT-08:00 Z 时区 RFC 822 time zone -0800
相关推荐
`Calendar`类则是Java中更底层的日期和时间工具,它提供了一套完整的API来操作日期和时间,包括添加、减去、比较日期等操作。与`SimpleDateFormat`不同,`Calendar`是一个抽象类,我们通常通过`getInstance()`方法...
Java官方API帮助文档是Java开发者不可或缺的参考资料,它详尽地介绍了Java平台标准版(Java SE)的各种类库、接口和方法。这份文档是开发者学习和理解Java编程语言的重要工具,帮助他们有效地利用Java的内置功能和...
Java API,全称为Java应用程序接口,是Java编程语言的核心组成部分,包含了各种类库、接口和异常,为开发者提供了丰富的功能,使得开发Java程序变得更加高效和便捷。本资料“java常用API-适合初学者”旨在帮助初学者...
1. **java.lang**:这是所有Java程序的基础,包含了一些基本类型如`String`、`Integer`、`Boolean`,以及运行时必要的类如`System`、`Object`和`Class`。`Object`类是所有Java类的父类,而`System`类提供了系统级的...
本文将详细介绍如何在Java中使用天行数据API来实现这些查询。 首先,我们需要了解如何获取和使用天行数据API的密钥。通常,你需要在天行数据的官方网站注册并申请API密钥,这个密钥将在后续的请求中作为身份验证的...
- **java.text.SimpleDateFormat** - **java.util.Calendar** #### 四、文件IO操作 **4.1 java.io.File文件类** - **构造方法**: - `File(String pathname)` - `File(File parent, String child)` - **常用...
9. **日期和时间**:`java.util.Date`和`java.util.Calendar`类处理日期和时间,而`java.text.SimpleDateFormat`则用于日期和时间的格式化。 10. **XML处理**:`javax.xml`包提供了处理XML文档的API,如`...
Java核心API练习题 Java作为一门面向对象的编程语言,其核心API提供了许多基本数据类型、数组、字符串和工具类等功能。下面我们将通过一系列练习题来了解Java的核心API。 6.1 基本类型数组 在Java中,数组是一种...
- java.text: 提供文本格式化和解析,如SimpleDateFormat、NumberFormat等。 2. 文档注释规范 Java中的文档注释(Javadoc)以`/**`开头,常用于类、接口和方法的开头,用于记录作者、创建时间、版本信息以及方法...
需要注意的是,从Java 8开始,`java.time`包提供了更现代和强大的日期时间API,如`LocalDate`、`LocalDateTime`等。虽然这里的需求可以使用`java.util.Date`类完成,但使用`java.time`包中的类通常会提供更好的...
9. **日期和时间API**:Date、Calendar、SimpleDateFormat,处理日期和时间操作。 10. **Java安全管理器**:提供了一种机制来控制对系统资源的访问。 Java企业版(Java EE)API 5则是Java服务器端开发的规范,包含了...
总的来说,无论你是使用传统的`java.util.Date`和`SimpleDateFormat`,还是选择Java 8的`java.time`API,都可以轻松地在Java程序中获取并显示当前时间。了解这些基础将有助于你在开发中处理日期和时间相关的功能。
通过上述示例,我们可以看出Java提供了丰富的API来获取日期时间。不同的应用场景可以选择不同的类和方法来满足需求。例如,在需要处理数据库操作时,使用`java.sql.Date`更为合适;而在需要格式化输出或解析输入时,...
除了`SimpleDateFormat`,Java 8引入了新的日期时间API,包括`java.time.LocalDate`, `java.time.LocalTime`, `java.time.LocalDateTime` 和 `java.time.format.DateTimeFormatter`等。这个新API更强大,更易于使用...
- `java.util.Date`和`java.text.SimpleDateFormat`:旧版日期时间处理,现已不推荐。 - `java.time`包:Java 8引入的新API,如`LocalDate`, `LocalTime`, `LocalDateTime`,提供了更强大的日期时间操作功能。 5....
在Java编程语言中,`SimpleDateFormat` 是一个非常重要的日期时间格式化类,它允许我们按照自定义的模式来解析和格式化日期。在标题提到的"SimpleDateFormat YYYY解析问题"中,通常指的是使用 `YYYY` 作为日期模式时...
JDK 8 引入了新的日期时间 API,其中的 DateTimeFormatter 是线程安全的,可以替代 SimpleDateFormat。以下是使用 DateTimeFormatter 的示例: ```java import java.time.LocalDateTime; import java.time.format....
在Java编程语言中,日期和时间的处理是...通过上述示例,我们可以看到Java提供了丰富的工具和API来处理日期和时间的格式化与转换,这些技术在日常开发中极为常见,掌握它们对于任何Java开发者而言都是必不可少的技能。
为了更好地处理时间数据,Java提供了丰富的API来实现时间格式的转换。本文将详细介绍如何利用Java内置类库进行时间格式的转换,包括从`Date`对象转换为字符串(`String`),以及从字符串转换为`Date`对象。 #### 一...
需要注意的是,`Date`类在Java 8之后已经被`java.time`包中的新API所替代,如`LocalDateTime`、`Instant`等,它们提供了更强大、更易用的日期和时间处理功能。但鉴于题目要求,这里主要讨论的是`Date`类的使用。 `...