Java 8添加了一个新的java.time API,用于处理日期和时间(JSR 310) .
我将日期和时间作为字符串(例如 "2014-04-08 12:30"
) . 如何从给定的字符串中获取LocalDateTime实例?
使用完 LocalDateTime
对象后:如何将 LocalDateTime
实例转换回具有上述格式的字符串?
Java 8添加了一个新的java.time API,用于处理日期和时间(JSR 310) .
我将日期和时间作为字符串(例如 "2014-04-08 12:30"
) . 如何从给定的字符串中获取LocalDateTime实例?
使用完 LocalDateTime
对象后:如何将 LocalDateTime
实例转换回具有上述格式的字符串?
3 回答
Parsing date and time
要从字符串创建
LocalDateTime
对象,可以使用静态LocalDateTime.parse()方法 . 它需要一个字符串和一个DateTimeFormatter作为参数 .DateTimeFormatter
用于指定日期/时间模式 .Formatting date and time
要从
LocalDateTime
对象创建格式化字符串,可以使用format()
方法 .请注意,在
DateTimeFormatter
中有一些常用的日期/时间格式预定义为常量 . 例如:使用DateTimeFormatter.ISO_DATE_TIME
从上面格式化LocalDateTime
实例将导致字符串"1986-04-08T12:30:00"
.parse()
和format()
方法适用于所有与日期/时间相关的对象(例如LocalDate
或ZonedDateTime
)如果
String
在ISO-8601 format中,您还可以在String
上使用LocalDate.parse()
或LocalDateTime.parse()
而不为其提供模式 .例如,
Output ,
并且仅当您必须处理其他日期模式时才使用
DateTimeFormatter
,例如, dd MMM uuuu 表示月中的某一天(两位数),该月份名称的三个字母(Jan,Feb,Mar,...),以及一个四位数的年份:Output
还记得
DateTimeFormatter
对象是双向的;它既可以解析输入也可以格式化输出 .Output
(见完整list of Patterns for Formatting and Parsing DateFormatter)
上面的两个答案都很好地解释了关于字符串模式的问题但是,如果您正在使用ISO 8601,则无需应用
DateTimeFormatter
,因为LocalDateTime已经为它准备好了:Convert LocalDateTime to Time Zone ISO8601 String
Convert from ISO8601 String back to a LocalDateTime