Как разобрать дату и время со смещением - PullRequest
0 голосов
/ 25 апреля 2018

Строки даты и времени, такие как «2018-04-01 10:00:00», могут использоваться для создания объектов Date с этим кодом Котлина:

val format = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
val d : Date = format.parse("2018-04-01 10:00:00")   // works fine

Но как проанализировать строки даты и времени с такими смещениями, какэти:

2018-04-01 10:00:00+02       // GMT + 2 hours
2018-04-01 10:00:00+02:30    // GMT + 2 hours, 30 minutes
2018-04-01 10:00:00+0230     // GMT + 2 hours, 30 minutes

Java 8: Instant не вариант.

edit:

Я попробовал предложение и использовал 'x', 'X','z' и 'Z', 'XXX' с пробелом и без него.Компилирует нормально.X-версии аварийно завершают работу при создании экземпляра SimpleDateFormat - кажется, не поддерживается на используемом уровне API Android:

// java.lang.IllegalArgumentException: Unknown pattern character 'X'
var formatter3 = SimpleDateFormat("yyyy-MM-dd HH:mm:ssX")

// java.lang.IllegalArgumentException: Unknown pattern character 'x'
var formatter4 = SimpleDateFormat("yyyy-MM-dd HH:mm:ssx")

// java.lang.IllegalArgumentException: Unknown pattern character 'x'
var formatter5 = SimpleDateFormat("yyyy-MM-dd HH:mm:ss x")

z-версии:

val formatter = SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ")
or
val formatter = SimpleDateFormat("yyyy-MM-dd HH:mm:ssz")
val date = formatter.parse("2018-04-24 17:33:02+02")

, кажется, работает.

@ Андреас: Разбор даты и времени - это боль в заднице.Вместо отрицательного ответа на вопрос, простая строка кода была бы более полезной

1 Ответ

0 голосов
/ 25 апреля 2018

Часовые пояса можно анализировать с помощью Z (RFC 822) или X (ISO 8601), см. https://developer.android.com/reference/java/text/SimpleDateFormat

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...