Как разобрать строковую дату на другую дату для другого часового пояса - PullRequest
0 голосов
/ 07 января 2019

Учитывая, что у меня есть такая строковая дата

val date =  "2019-01-07T13:54:00+0000"

Как перевести эту дату в другой часовой пояс, например, "Азия / Калькутта"?

Я пытался:

val zone = DateTimeZone.forID("Asia/Kolkata")

val resultMillis = ISODateTimeFormat
    .dateTimeParser()
    .withZone(zone)
    .parseDateTime(date)

Но это не сработало

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Это двухэтапный процесс: вы анализируете смещение или часовой пояс в строке, а затем конвертируете в нужный часовой пояс. Я могу писать только код Java, я надеюсь, что вы переведете:

    DateTimeZone zone = DateTimeZone.forID("Asia/Kolkata");
    String date = "2019-01-07T13:54:00+0000";
    DateTime dt = ISODateTimeFormat.dateTimeParser()
            .parseDateTime(date)
            .withZone(zone);
    System.out.println(dt);

Вывод:

2019-01-07T19: 24: 00,000 + 05: 30

Вы были почти там. Я просто поменял местами звонки на withZone и parseDateTime.

0 голосов
/ 07 января 2019

Из моей головы выходит класс TimeZone:

val date =  "2019-01-07T13:54:00+0000"
val zone = TimeZone.getTimeZone("Asia/Kolkata")

Что Calendar понимает:

val calendar = Calendar.getInstance(zone)

Тогда SimpleDateFormat должен сделать:

val format = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
val simpleDateFormat = new SimpleDateFormat(format, Locale.ENGLISH);
calendar.setTime(sdf.parse(date));
...