如何获取此日期格式“2022-06-18_21:31:17.568-07:00”
How to get this date format "2022-06-18_21:31:17.568-07:00"
为了在 JAVA
中获得像这样 "2022-06-18_21:31:17.568-07:00"
的日期,我需要采用什么格式
yyyy-MM-dd'_'HH:mm:ss.SSSX
这是我正在尝试使用的,但在这个结果中
2017-10-10_11:43:56.336+05
我真正需要的是2022-06-18_21:31:17.568-07:00
tl;博士
ZonedDateTime.of(
LocalDate.of( 2022 , 6 , 18 ) ,
LocalTime.of( 21 , 31 , 17 , 568_000_000 ) ,
ZoneId.of( "America/Los_Angeles" )
)
.format( DateTimeFormatter.ISO_OFFSET_DATE_TIME )
.replace( "T" , "_" )
ISO 8601
您想要的格式几乎符合 java.time classes 使用的标准 ISO 8601 格式。将标准格式中间的 T
替换为您想要的下划线。
我强烈建议坚持使用标准,保留 T
,而不是发明自己的格式。
java.time
现代方法使用 java.time classes。
避免使用 SimpleDateFormat
,因为它是麻烦的旧日期时间 classes 的一部分。现在被 java.time 取代。特别是这里的 ZonedDateTime
class.
ZoneId z = ZoneId.of( "America/Los_Angeles" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;
String output = zdt.toString() ;
java.timeclass中的toString
方法默认使用标准的ISO 8601格式。在 ZonedDateTime
的情况下,除了与 UTC 的偏移量之外,该格式被明智地扩展为在方括号中附加时区名称。
zdt.toString(): 2017-07-23T01:23:45.678-07:00[America/Los_Angeles]
DateTimeFormatter
如果您坚持,您可以删除附件,尽管它确实提供了有价值的信息。
或者您可以使用替代方法生成字符串 DateTimeFormatter
object, one built-in as a constant: DateTimeFormatter.ISO_OFFSET_DATE_TIME
DateTimeFormatter f = DateTimeFormatter.ISO_OFFSET_DATE_TIME ;
String output = z.format( f ) ;
如果你坚持,你可以用你的下划线代替。
String modified = output.replace( "T" , "_" ) ;
2017-07-23_01:23:45.678-07:00
使用这样的格式 yyyy-MM-dd'_'HH:mm:ss.SSSXXX
而不是 yyyy-MM-dd'_'HH:mm:ss.SSSX
为了在 JAVA
中获得像这样"2022-06-18_21:31:17.568-07:00"
的日期,我需要采用什么格式
yyyy-MM-dd'_'HH:mm:ss.SSSX
这是我正在尝试使用的,但在这个结果中
2017-10-10_11:43:56.336+05
我真正需要的是2022-06-18_21:31:17.568-07:00
tl;博士
ZonedDateTime.of(
LocalDate.of( 2022 , 6 , 18 ) ,
LocalTime.of( 21 , 31 , 17 , 568_000_000 ) ,
ZoneId.of( "America/Los_Angeles" )
)
.format( DateTimeFormatter.ISO_OFFSET_DATE_TIME )
.replace( "T" , "_" )
ISO 8601
您想要的格式几乎符合 java.time classes 使用的标准 ISO 8601 格式。将标准格式中间的 T
替换为您想要的下划线。
我强烈建议坚持使用标准,保留 T
,而不是发明自己的格式。
java.time
现代方法使用 java.time classes。
避免使用 SimpleDateFormat
,因为它是麻烦的旧日期时间 classes 的一部分。现在被 java.time 取代。特别是这里的 ZonedDateTime
class.
ZoneId z = ZoneId.of( "America/Los_Angeles" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;
String output = zdt.toString() ;
java.timeclass中的toString
方法默认使用标准的ISO 8601格式。在 ZonedDateTime
的情况下,除了与 UTC 的偏移量之外,该格式被明智地扩展为在方括号中附加时区名称。
zdt.toString(): 2017-07-23T01:23:45.678-07:00[America/Los_Angeles]
DateTimeFormatter
如果您坚持,您可以删除附件,尽管它确实提供了有价值的信息。
或者您可以使用替代方法生成字符串 DateTimeFormatter
object, one built-in as a constant: DateTimeFormatter.ISO_OFFSET_DATE_TIME
DateTimeFormatter f = DateTimeFormatter.ISO_OFFSET_DATE_TIME ;
String output = z.format( f ) ;
如果你坚持,你可以用你的下划线代替。
String modified = output.replace( "T" , "_" ) ;
2017-07-23_01:23:45.678-07:00
使用这样的格式 yyyy-MM-dd'_'HH:mm:ss.SSSXXX
而不是 yyyy-MM-dd'_'HH:mm:ss.SSSX