Отметка времени UTC должна быть сохранена в переменной Java - PullRequest
0 голосов
/ 31 августа 2018

В ответе от SMTP2GO после успешной отправки электронной почты ответ имеет вид URL, закодированный с элементом времени как time=2018-08-30T09%3A22%3A31Z. Мне нужно время, чтобы сохранить в переменной Java как 2018-08-30 09:22 Как я могу это сделать ; любая помощь будет оценена !!

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm");
    String urlParam = "time=2018-08-30T09%3A22%3A31Z";
    String[] splitParam = urlParam.split("=");
    if (splitParam.length == 2 && splitParam[0].equals("time")) {
        String incomingTimeString = URLDecoder.decode(splitParam[1], StandardCharsets.UTF_8);
        OffsetDateTime time = OffsetDateTime.parse(incomingTimeString);
        String timeStringForDisplay = time.format(formatter);
        System.out.println(timeStringForDisplay);
    }

Вывод из приведенного выше фрагмента является желательным:

2018-08-30 09: 22 * ​​1005 *

Обратите внимание, что время указано в UTC. Возможно, вы захотите преобразовать его в часовой пояс вашего пользователя или, по крайней мере, вывести смещение со временем.

Хороший способ сделать это - использовать URLDecoder для декодирования %3A из закодированной строки в двоеточия и использовать подходящий класс даты и времени для хранения даты и времени, например OffsetDateTime или Instant (класс Timestamp, предложенный в комментарии, был бы плохим выбором; он давно устарел и был предназначен только для хранения и извлечения значений меток времени из баз данных SQL и из них). Ваша временная строка имеет формат ISO 8601, формат, который OffsetDateTime, Instant и другие современные классы даты и времени анализируют как значения по умолчанию. Это означает, что нам не нужно указывать формат.

Ссылка: Обучающее руководство по Oracle: Дата и время , объясняющее, как использовать java.time.

0 голосов
/ 31 августа 2018

Если время является строкой, вы можете сделать:

String[] timeparts = time.split("T");
String[] timeparts2 = timeparts[1].split("%3A");

String result = timeparts[0] + " " + timeparts2[0] + ":" + timeparts2[1];

Однако это не очень хороший способ сделать это.

...