Как я могу проанализировать диапазоны дат, а затем проверить их на наличие коллизий? - PullRequest
1 голос
/ 20 августа 2011

Мне нужно создать программу типа системы бронирования, в которой пользователь вводит имя пользователя (строку), затем месяц, дату и время, которое он хочет забронировать, а затем месяц окончания, дату и время.Так что это будет выглядеть примерно так:

John Jul 23 9 Jul 24 18

, то есть

user startMonth startDate startTime endMonth endDate endTime

Мне нужно иметь возможность реализовать это так, чтобы я мог проверить, сталкиваются ли какие-либо заказы, может кто-нибудь, пожалуйста,дайте мне руководство, как это сделать, так как я новичок в Java.

РЕДАКТИРОВАТЬ: я знаю, как анализировать ввод, но я не совсем знаю, как использовать функции даты в Java, икак это поможет мне проверить, не сталкиваются ли какие-либо заказы.

Ответы [ 5 ]

2 голосов
/ 21 августа 2011

Чтобы ответить на вопрос ... ( start1 <= end2 and start2 <= end1 )

java.util.Date упаковывает значение long. используйте getTime(), чтобы получить это значение, для сравнения.

См. http://c2.com/cgi/wiki?TestIfDateRangesOverlap

2 голосов
/ 20 августа 2011

В Java синтаксический анализ и форматирование Date объектов обрабатываются объектами типа DateFormat, обычно SimpleDateFormat.

Просмотрите документацию SimpleDateFormat и попытайтесь представить, как можно использовать объекты Date, чтобы увидеть, есть ли какие-либо коллизии.

0 голосов
/ 20 августа 2011

как уже писал maerics: SimpleDateFormat - ваш друг ...

разделите ваш ввод на 3 части, как предложил SJuan76, и подайте обе части даты в метод синтаксического анализа SimpleDateFormat ... таким образом, вы можете получить объект Dateдля обеих частей даты ...

сейчас для части бронирования и проверки коллизий ...

я бы предложил вам создать свой собственный класс для бронирования или бронирования, или как вы хотитеназовите его.

вы можете использовать LinkedList для хранения объектов ...

когда вы добавляете объект в список, сохраняйте список отсортированным по дате начала ... таким образом, вы можетепосмотрите, не столкнется ли вставленный объект с другим ... найдите место, куда вставить новый объект ... посмотрите на предшественника ... если дата начала нового объекта раньше даты окончания предшествующих, у нас есть коллизия... если новая дата окончания - после даты начала преемников, у нас есть коллизия ... если коллизии нет, вставьте новый объект в этой позиции в списке ...

0 голосов
/ 20 августа 2011

Вам нужно проанализировать ввод, вы можете сделать это с помощью метода String.split или более изощренный способ, который я считаю лучшим, это использование регулярных выражений Java.

после разбора вы можете сформировать строку, которая будет содержать дату, а затем проанализировать ее с помощью анализатора даты Java.

0 голосов
/ 20 августа 2011

Попробуйте использовать объект Календарь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...