2016-06-05 4 views
0

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

String from ="2015.08.31T16:00:00.000Z"; 

Можно добавить восемь часов к этому времени формат?

+1

Start, взглянув на [Дата Время Trail] (https://docs.oracle.com/javase/tutorial/datetime/) и [JavaDocs для даты/времени API ] (http://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html) – MadProgrammer

ответ

0

Создать форматтер, используя DateTimeFormatter.ofPattern("yyyy.MM.dd'T'HH:mm:ss.SSSX"); Затем вы можете использовать ZonedDateTime.parse и ZonedDateTime.format.

Полный код на Online Java compiler IDE

0

Написать синтаксический анализатор, прочитать данные, создать date object и перейти к нему, как вам нравится. Нет реального ярлыка, который я знаю, так или иначе, что строка должна быть преобразована во временные данные.

0

Как вы можете видеть в комментариях, процесс имеет 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); 
+0

Используется старый API дат даты. Используйте новый api java 8 api или joda datetime api. – JackDaniels

0

Вы используете нестандартный формат даты, поэтому вам потребуется пользовательский шаблон:

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", что тот же момент времени, но зона смещения регулируется, а не по местному времени.

Смежные вопросы