val dateString = "Mon Oct 29 14:33:09 MYT 2018"
val formatter = DateTimeFormatter.ofPattern( "EEE MMM dd HH:mm:ss z uuuu" )
val date = LocalDateTime.parse(dateString, formatter).atZone(ZoneId.systemDefault())
val formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX")
date.format(formatter2)
По какой-то странной причине вы интерпретируете это как LocalDateTime
. Я думаю, что вы должны использовать ZonedDateTime
, чтобы проанализировать дату и затем преобразовать ее в ваш часовой пояс (это будет правильно преобразовывать дату в вашем местном часовом поясе).
val dateString = "Mon Oct 29 14:33:09 MYT 2018"
val formatter = DateTimeFormatter.ofPattern( "EEE MMM dd HH:mm:ss z uuuu" )
val date = ZonedDateTime.parse(dateString, formatter).withZoneSameInstant(ZoneId.systemDefault())
val formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX")
date.format(formatter2)
И если вы хотите, чтобы дата была с Z
(Z обозначает часовой пояс, который будет UTC), вам придется преобразовать его для UTC.
val date2 = date.withZoneSameInstant(ZoneId.of("UTC"))
date2.format(formatter2)
// String = 2018-10-29T06:33:09.000Z