Я пишу приложение java, и я только начал с java Date
. То, что я пытаюсь сделать, это прочитать json
, который содержит две марки даты, которые выглядят так: 2015-05-20T17:24Z[UTC]
. После того, как я прочитал две даты, я хочу взять только те объекты, у которых есть отметка времени между двумя датами, которые я только что прочитал. Может ли кто-нибудь помочь мне в работе с этим форматом?Формат даты Java получает все даты между двумя значениями даты
ответ
Для разбора использовать дату SimpleDateFormat
:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm'Z'[ZZZ]");
Date date = sdf.parse("2015-05-20T17:24Z[UTC]");
Тогда либо цикл по объектам, которые вы хотите фильтровать и проверить object.date.compareTo(startDate) >= 0
и object.date.compareTo(endDate) <= 0
т.д.
Также можно использовать отсортированный карту с указанием даты объектов, как ключ.
public static List<Date> getDaysBetweenDates(Date startdate, Date enddate)
{
List<Date> dates = new ArrayList<Date>();
Calendar calendar = new GregorianCalendar();
calendar.setTime(startdate);
while (calendar.getTime().before(enddate))
{
Date result = calendar.getTime();
dates.add(result);
calendar.add(Calendar.DATE, 1);
}
return dates;
}
Функция выше перечислит все действительные объекты даты между двумя датами
Java 8
Start путем преобразования значения String
к чему-то, что сравнимо ...
String text = "2015-05-20T17:24Z[UTC]";
ZonedDateTime from = ZonedDateTime.parse(text, DateTimeFormatter.ISO_ZONED_DATE_TIME);
Теперь, (очевидно), вам нужна дата to
, но преобразование - это тот же процесс. Когда вам нужно, преобразовать значение, которое вы хотите сравнить с ZonedDateTime
объекта (как описано выше) и использовать его функциональность, чтобы определить, если оно находится в пределах указанного диапазона ...
ZonedDateTime from = ...;
ZonedDateTime to = ...;
ZonedDateTime date = ...;
if (date.isAfter(from) && date.isBefore(to)) {
}
Теперь, это исключительное, если вы хотят даты from
и to
быть включены, вам необходимо добавить isEqual
проверки для обоего дат from
и to
(но это нужно только соответствовать одному, очевидно)
Теперь, вы должны быть в состоянии использовать что-то аналогично использованию Joda-Time
Я так хочу преобразовать все наше устаревшее программное обеспечение в Java 8 ...Большая часть рассуждений - это новая дата api. – Thomas
@Thomas Я умер за «try-with-resources», когда вышла Java 7: P - Знай свою боль;) – MadProgrammer
Действительно? Это заслужило понижение, потому что? Если я сделал что-то не так, я бы хотел узнать, что я могу исправить, и учиться на нем. – MadProgrammer
Создайте от/до ZonedDateTime годов, как сказал MadProgrammer:
ZonedDateTime from = ZonedDateTime.parse(text, DateTimeFormatter.ISO_ZONED_DATE_TIME);
Затем создайте Joda DateTime
«s для из/в: -
DateTimeZone zone = DateTimeZone.forID(zdt.getZone().getId());
DateTime from = new DateTime(zdt.toInstant().toEpochMilli());
Затем с помощью Joda-х Interval.contains()
, чтобы проверить, если каждый Instant попадает в интервал - имея в виду, что исключает дату окончания.
- 1. Выберите даты между двумя значениями столбца
- 2. R получает разницу между двумя даты
- 3. Как получить все ДАТЫ между двумя входами ДАТЫ В Rails
- 4. Даты между двумя датами
- 5. даты между двумя днями
- 6. Проверка даты между двумя ошибками даты, clueless
- 7. mysql запрос даты, между двумя полями даты
- 8. Формат даты даты
- 9. Формат даты/даты (-62135571600000)/
- 10. Приложение получает другой формат даты
- 11. преобразование даты java в формат даты оракула
- 12. формат даты в java
- 13. Изменить формат даты Java
- 14. Формат даты - Java
- 15. Java формат даты преобразования
- 16. Java Формат даты weird
- 17. Java, формат даты изменения.
- 18. Формат даты Строка java
- 19. Java Формат времени/даты
- 20. Формат даты в JAVA
- 21. Java Формат даты
- 22. Java формат даты преобразования
- 23. Java JAXB Формат даты
- 24. Формат даты JAVA
- 25. Oracle sqlSubtract между двумя даты
- 26. Формат даты и даты JQuery формата даты
- 27. Выбрать все даты между двумя выбранными датами
- 28. Как получить все даты между двумя датами
- 29. Как получить все даты между двумя датами?
- 30. Как сгенерировать все даты между двумя датами
Разберите формат 'java.util.Date' и используйте методы compareTo()' или 'before()' и 'after()'. Или введите даты в запрос и т. Д., В зависимости от того, как «я хочу использовать только те объекты, у которых есть отметка времени между двумя датами», должен/должен быть реализован (подсказка: необходимые детали). – Thomas
Какая версия Java? Вы используете Java 8? (скажите «да») ... Если это так, пожалуйста, ознакомьтесь с новым API-интерфейсом Java 8 DateTime: http://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html и https : //docs.oracle.com/javase/tutorial/datetime/ –
@DaDaDom Я использую java 6 – dres