Так что я уже готов отогнать свою машину с моста и мне действительно нужно внешнее мнение о том, как это сделать, я несколько дней боролся за то, чтобы найти какое-либо правильное решение, и мне кажется, что это просто моя затея.стресс, сдерживающий меня.При этом приветствуется любая помощь.
Предисловие: Мое приложение обрабатывает клиентов в базе данных sql, и пользователи могут выбрать клиента и загрузить встречу в другую таблицу.Да, это домашнее задание, и да, я попытался решить это сам.Я столкнулся с ментальным блоком и нигде не могу его найти, поэтому мне действительно нужно, чтобы кто-то подсказал мне, что я делаю неправильно.
Когда я сталкиваюсь с серьезными ментальными блоками, это преобразование датправильно, а также запрос SQL.Я использую JavaFX datepicker, который возвращает Date () в форме «YYYY-MM-DD» , например на сегодня будет «2018-25-11».Назначения сохраняются в UTC, что приводит меня к моей первой проблеме.
Если сотрудник выбирает дату, скажем, 1 декабря 2018 года, эту дату необходимо преобразовать в UTC, и для этого нужны полные 24 часазапрос из базы данных.
Вопрос 1: Итак, моя идея заключалась в том, чтобы получить объект Date () из datepicker, который находится в приведенной выше форме, затем добавить к нему «00:00:00» ипытаюсь конвертировать в UTC, но я понятия не имею, как это сделать, и не могу найти ничего подходящего, как бы вы поступили так.Мне также нужна конвертированная завтрашняя дата в '00: 00: 00', чтобы я мог получить полный диапазон возможных значений времени UTC для запроса
Вот моя попытка ответа на вопрос 1 с выводом:
//I live in PST, which is UTC-8
test("2018-12-01");
private static void test(String date){
try{
DateFormat utcFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
utcFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
Date startDate = utcFormat.parse(date + " 00:00:00");
System.out.println(startDate);
LocalDateTime today = convertToLocalDateTimeViaSqlTimestamp(startDate);
today = today.plusDays(1);
System.out.println(convertToDateViaSqlTimestamp(today));
}catch(Exception e){
e.printStackTrace();
}
}
private static Date convertToDateViaSqlTimestamp(LocalDateTime dateToConvert) {
return java.sql.Timestamp.valueOf(dateToConvert);
}
private static LocalDateTime convertToLocalDateTimeViaSqlTimestamp(Date dateToConvert) {
return new java.sql.Timestamp(dateToConvert.getTime()).toLocalDateTime();
}
Вывод :
Fri Nov 30 16:00:00 PST 2018
2018-12-01 16:00:00.0
Я перечитал материал нашего класса, и он ничего не содержит в приведенном выше.Я связывался / пытался встретиться со своим профессором в рабочее время, и он никогда не был доступен даже во время своего мандата.У меня есть полностью работающая программа, и последнее, что меня сдерживает, - это неспособность найти какое-либо полезное решение, описанное выше.
Вопрос 2. База данных содержит время начала работы, в UTC просто для простоты, скажем,«00:00:00» и увеличивается на 8 часов, поэтому конечное время будет «08:00:00», как мне вернуть все записи о встречах, которые попадают между этими моментами времени из вопроса 2, при условии, что время начала / окончания указано в datetimeформат.
Вот что я сделал для вопроса 2, я хотел бы знать, приемлемо ли это, учитывая, что я знаю, что точный формат дат всегда будет в формате «ГГГГ-ММ-ДД» или будетэто потерпело неудачу в каком-то непонятном состоянии?:
SELECT * FROM appointment WHERE start >= '2018-12-01 00:00:00' AND end < '2018-12-01 02:00:00';