у меня время в формате ниже,как добавить часы в свое время
String from ="2015.08.31T16:00:00.000Z";
Можно добавить восемь часов к этому времени формат?
у меня время в формате ниже,как добавить часы в свое время
String from ="2015.08.31T16:00:00.000Z";
Можно добавить восемь часов к этому времени формат?
Создать форматтер, используя DateTimeFormatter.ofPattern("yyyy.MM.dd'T'HH:mm:ss.SSSX");
Затем вы можете использовать ZonedDateTime.parse и ZonedDateTime.format.
Полный код на Online Java compiler IDE
Написать синтаксический анализатор, прочитать данные, создать date object и перейти к нему, как вам нравится. Нет реального ярлыка, который я знаю, так или иначе, что строка должна быть преобразована во временные данные.
Как вы можете видеть в комментариях, процесс имеет 3 этапа:
String from ="2015.08.31T16:00:00.000Z";
//conver date string to Date
SimpleDateFormat formatter = new SimpleDateFormat("yyyy.MM.dd'T'HH:mm:ss.SSS'Z'");
Date parsedDate = formatter.parse(from);
System.out.println(parsedDate); // test output
//add 8 hours
Calendar calendar = Calendar.getInstance();
calendar.setTime(parsedDate);
calendar.add(Calendar.HOUR, 8);
Date newTime = calendar.getTime();
//convert to original format
String to = formatter.format(newTime);
System.out.println(to);
Используется старый API дат даты. Используйте новый api java 8 api или joda datetime api. – JackDaniels
Вы используете нестандартный формат даты, поэтому вам потребуется пользовательский шаблон:
DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy.MM.dd'T'HH:mm:ss.SSSX");
Если вы хотите, чтобы настроить время, сохраняя ту же зону смещения (UTC +0, как указано в «Z» в конце), вы можете сделать это:
OffsetDateTime offsetDateTimeUTC = OffsetDateTime.parse("2015.08.31T16:00:00.000Z", pattern);
OffsetDateTime plus8hours = offsetDateTimeUTC.plusHours(8);
Для того, чтобы получить его обратно в формат строки, которую вы можете использовать ту же схему, как это:
String newTime = plus8hours.format(pattern);
, который был бы "2015.09.01T00:00:00.000Z"
Если вы хотите, чтобы сделать корректировку в зону смещения вместо в течение нескольких часов, вы бы сделать это таким образом:
OffsetDateTime plus8zones = offsetDateTimeUTC.withOffsetSameLocal(ZoneOffset.ofHours(-8))
Если отформатирован в вашем формате, это будет "2015.08.31T16:00:00.000-08"
, что тот же момент времени, но зона смещения регулируется, а не по местному времени.
Start, взглянув на [Дата Время Trail] (https://docs.oracle.com/javase/tutorial/datetime/) и [JavaDocs для даты/времени API ] (http://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html) – MadProgrammer