ZonedDateTime
将日期、时间和区域实例化为ZonedDateTime
对象。
LocalDate ld = LocalDate.of( 2015 , Month.SEPTEMBER , 24 ) ;
LocalTime lt = LocalTime.of( 14 , 0 ) ;
ZoneId z = ZoneId.of( "Asia/Colombo" ) ;
ZonedDateTime zdt = ZonedDateTime.of( ld , lt , z ) ;
如果给定一个java.util.Date
对象,则转换为Instant
.
Instant instant = myJavaUtilDate.toInstant() ;
应用区域以从 UTC 移动。
ZoneId z = ZoneId.of( "Asia/Colombo" ) ;
ZonedDateTime zdt = instant.atZone( z ) ;
要生成所需格式的文本,请使用DateTimeFormatter
class. 这个问题已经在 Stack Overflow 上解决了很多次。因此,搜索该类名称以了解更多信息。
DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuu-MM-dd HH:mm:ss OOOO" ) ;
String output = zdt.format( f ) ;
2015-09-24 14:00:00 GMT+05:30
ISO 8601
你展示的那些格式都是糟糕的选择。将日期时间值交换为文本时,请使用标准ISO 8601格式。标准格式旨在易于机器解析,并且易于跨文化的人类阅读。
java.time类在解析/生成字符串时默认使用 ISO 8601 格式。