2016-05-18 2 views
1

Как получить начальный и конечный час данного Мгновенного действия. Например: Если мой Живой 2016-05-18T09: 25: 17.554Z тогда мне нужна строка как 2016-05-18T09: 00: 00.000Z-2016-05-18T10: 00: 00.000ZМгновенный диапазон времени

т.е. я нужно окно времени, где мой миг лежит.

ответ

1

Для Java 8 раз API это может быть сделано, как это:

final Instant instant = Instant.parse("2016-05-18T09:25:17.554Z"); 
final Instant startInstant = instant.truncatedTo(ChronoUnit.HOURS); 
final Instant endInstant = startInstant.plus(1, ChronoUnit.HOURS); 
System.out.println(instant + ", " + startInstant + ", " + endInstant); 

Это отпечатки 2016-05-18T09:25:17.554Z, 2016-05-18T09:00:00Z, 2016-05-18T10:00:00Z.

+0

Именно то, что мне было нужно. Благодаря :) – kps

1

Использование Apache Commons-Ланг, вы можете использовать DateUtils, чтобы получить самые высокие и самые низкие даты:

Date date = Date.from(instant);; 
Date high = DateUtils.ceiling(date, Calendar.HOUR);//to get higher 
Date low = DateUtils.truncate(date, Calendar.HOUR); //to get lower 
1

Попробуйте использовать магическое число 86400000

Instant instant = Instant.now(); 
Instant instantStart = Instant.ofEpochMilli((instant.toEpochMilli()/86400000) * 86400000); 
Instant instantEnd = Instant.ofEpochMilli((instant.toEpochMilli()/86400000) * 86400000 + 86400000); 
System.out.println(instant); 
System.out.println(instantStart); 
System.out.println(instantEnd); 

Выход:

2016-05-18T09:47:03.782Z 
2016-05-18T00:00:00Z 
2016-05-19T00:00:00Z 
Смежные вопросы