Гость
Форумы / Java [игнор отключен] [закрыт для гостей] / Сравнение лет в датах / 9 сообщений из 9, страница 1 из 1
25.04.2019, 14:17
    #39806269
Korcar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение лет в датах
И вот возникла потребность сравнить цифири лет в двух датах

Код: java
1.
2.
3.
4.
5.
DateTimeFormatter dtfrm = DateTimeFormatter.ofPattern("dd.MM.yyyy");
java.sql.Date dt1 = java.sql.Date.valuesOf(LocalDate.parse(request.getParameter("dt1").dtfrm));
java.sql.Date dt2 = java.sql.Date.valuesOf(LocalDate.parse(request.getParameter("dt2").dtfrm));

if (dt1.getYear()==dt2.getYear()) {


такой вариант не катит как устаревший,


зато канает вариант такой:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DateTimeFormatter dtfrm = DateTimeFormatter.ofPattern("dd.MM.yyyy");
java.sql.Date dt1 = java.sql.Date.valuesOf(LocalDate.parse(request.getParameter("dt1").dtfrm));
java.sql.Date dt2 = java.sql.Date.valuesOf(LocalDate.parse(request.getParameter("dt2").dtfrm));

Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1 = setTime(dt1);
cal2 = setTime(dt2);

if ((cal1.get(cal1.YEAR))==(cal2.get(cal2.YEAR))) {



теперь вопрос: нахрена вот городить такой огород с использованием дополнительного объекта и еще запихивать в его метод его же параметр (это вообще писец полный), чтобы сравнить части двух уже имеющихся дат? нафига вот сложности то такие, когда было всё просто? или я чего-то недопонял?
...
Рейтинг: 0 / 0
25.04.2019, 14:40
    #39806291
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение лет в датах
Korcarтеперь вопрос: нахрена вот городить такой огород ...? или я чего-то недопонял?Мы смешиваете старое api (java.util) и новое (java.time), так делать не нужно - они оба самодостаточны. У LocalDate есть метод getYer()
...
Рейтинг: 0 / 0
25.04.2019, 14:55
    #39806305
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение лет в датах
Андрей ПанфиловKorcarтеперь вопрос: нахрена вот городить такой огород ...? или я чего-то недопонял?Мы смешиваете старое api (java.util) и новое (java.time), так делать не нужно - они оба самодостаточны. У LocalDate есть метод getYer()
у него вообще java.sql там, мне вот интересно где ТСы такие древние советы находят, на SO забанены чтоли?
Код: java
1.
2.
3.
LocalDate ldA = LocalDate.parse( inputA );
LocalDate ldB = LocalDate.parse( inputB );
long years= ChronoUnit.YEARS.between( ldA , ldB );
...
Рейтинг: 0 / 0
25.04.2019, 15:44
    #39806348
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение лет в датах
забыл никгде ТСы такие древние советы находят, на SO забанены чтоли?
он хотел сравнить даты на предмет одного и того же года, а не считать разницу в годах между двумя датами, но в главном ты прав
...
Рейтинг: 0 / 0
26.04.2019, 09:31
    #39806584
Korcar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение лет в датах
забыл никАндрей Панфиловпропущено...
Мы смешиваете старое api (java.util) и новое (java.time), так делать не нужно - они оба самодостаточны. У LocalDate есть метод getYer()
у него вообще java.sql там, мне вот интересно где ТСы такие древние советы находят, на SO забанены чтоли?
Код: java
1.
2.
3.
LocalDate ldA = LocalDate.parse( inputA );
LocalDate ldB = LocalDate.parse( inputB );
long years= ChronoUnit.YEARS.between( ldA , ldB );


друг у друга списывает, а ты как думал?)

LocalDate не запихивается в PreparedStatement в качестве параметра запроса

Код: java
1.
PreparedStatement.setDate(1, ldA);


Код: plaintext
The method setDate(int, Date) in the type PreparedStatement is not applicable for the arguments (int, LocalDate)
...
Рейтинг: 0 / 0
26.04.2019, 09:38
    #39806586
Korcar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение лет в датах
а если делать через setObject, то запрос отрабатывает, но условие по дате отсеивает все данные напрочь и те, что нужны и те, что не нужны
...
Рейтинг: 0 / 0
26.04.2019, 09:43
    #39806589
Korcar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение лет в датах
забыл никАндрей Панфиловпропущено...
Мы смешиваете старое api (java.util) и новое (java.time), так делать не нужно - они оба самодостаточны. У LocalDate есть метод getYer()
у него вообще java.sql там, мне вот интересно где ТСы такие древние советы находят, на SO забанены чтоли?
Код: java
1.
2.
3.
LocalDate ldA = LocalDate.parse( inputA );
LocalDate ldB = LocalDate.parse( inputB );
long years= ChronoUnit.YEARS.between( ldA , ldB );


кстати, парсинг даты из параметра реквеста, который текст, без формата не проходит
...
Рейтинг: 0 / 0
26.04.2019, 10:01
    #39806592
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение лет в датах
KorcarLocalDate не запихивается в PreparedStatement в качестве параметра запросаЗдрасьте... драйвер же должен понимать, что такое java.time и должен, соответственно, его конвертировать в нужное представление и обратно, вот у ораклового драйвера названия ojdbc4, ojdbc5,... ojdbc8 какбы намекают с какой версией жавы его следует использовать
...
Рейтинг: 0 / 0
29.04.2019, 11:50
    #39807532
Korcar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение лет в датах
Андрей ПанфиловKorcarLocalDate не запихивается в PreparedStatement в качестве параметра запросаЗдрасьте... драйвер же должен понимать, что такое java.time и должен, соответственно, его конвертировать в нужное представление и обратно, вот у ораклового драйвера названия ojdbc4, ojdbc5,... ojdbc8 какбы намекают с какой версией жавы его следует использовать
при чем тут драйвер? IDE пишет, что нифига такого метода нет, как setDate c параметром localdate

а с setObject не пойми как работало, а теперь стабильно просит указать sql type "Use setObject() with an explicit Types value to specify the type to use"
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Сравнение лет в датах / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]