LINUX.ORG.RU

Жабаприколы

 ,


1

2
Calendar cal = GregorianCalendar.getInstance();
Date dt; //from somewhere
...
log(dt.getClass().getName()+" / "+cal.getTime().getClass().getName());
log(dt.getTime()+" / "+cal.getTime().getTime());
log("Equals:"+dt.equals(cal.getTime()));
java.sql.Timestamp / java.util.Date
1525107600000 / 1525107600000
Equals:false

Понаделали дат, где как хочу, так и equals. Тупо царское сравнивание по long рулит.

Ответ на: комментарий от crutch_master

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

В DBF дата строкой хранилась. В формате ГГГГММДД :-).

А время в двух вариантах

Текстовый вариант - строка из 14 цифр в формате ГГГГММДДЧЧММСС; пустое значение - 14 пробелов. Бинарный вариант - два двойных слова little-endian, т.е. всего 8 байт; первое двойное слово содержит число дней от начала Юлианского календаря (01.01.4713 до нашей эры), второе двойное слово - число миллисекунд от начала суток; пустое значение - 8 нулевых байтов

monk ★★★★★
()
Ответ на: комментарий от monk

В DBF дата строкой хранилась. В формате ГГГГММДД

Ага. Видел такое недавно. Ну а что, надо идти к корням, что нам всю жизнь хранить дату в лонг? Диды делали и мы будем делать? Хранить в json. Модно и приколько. Все субд уже умеют сравнивать поля json.

crutch_master ★★★★★
() автор топика
Последнее исправление: crutch_master (всего исправлений: 1)
Ответ на: комментарий от RedPossum

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

тогда выражения вида dt1 - dt2 + dt3 можно вменяемо смотреть в отладчике, а не прыгать по приведениям типов

anonymous
()
Ответ на: комментарий от anonymous

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

Кто не умеет сам, тот учит других.

Partisan ★★★★★
()
Ответ на: комментарий от crutch_master

в делфях и ещё много где это double дней, в большинстве языков - беззнаковое целое

собственно, считать время long-ами - чисто сишно-плюсовое дерьмо, специально, видимо, задуманное, ради undefined behaviour при переполнении в процессе арифметических операций

anonymous
()
Ответ на: комментарий от monk

В DBF дата строкой хранилась. В формате ГГГГММДД :-).

исторические документы как в такой базе хранить? допутим о вещай, что были до нашей эры)

nihirash ★★★
()
Ответ на: комментарий от nihirash

А зачем беспокоиться о ерунде, которая была до сотворения мира?

ugoday ★★★★★
()
Ответ на: комментарий от crutch_master

в полноценных системах - беззнаковое 128_bit целое, ближе к эмбедед число разрядов можно сокращать

anonymous
()
Ответ на: комментарий от anonymous

в делфях и ещё много где это double дней,

Да да, помню. Целое - число дней после дня x, дробное - число [милли]секунд с начала для. То еще дерьмишко.

собственно, считать время long-ами - чисто сишно-плюсовое дерьмо, специально, видимо, задуманное, ради undefined behaviour при переполнении в процессе арифметических операций

Вот переполнение - это единственное, что может пойти не так с лонгом. С васяновскими реализациями может вообще что угодно пойти не так.

crutch_master ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Для этого можно взять серьёзные 128-битные целые, как советует анонимус выше.

crutch_master ★★★★★
() автор топика
Ответ на: комментарий от anonymous

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

Архитектор в треде!

Ты из SOLID нарушаешь сходу две буквы (SI). А из преимуществ что-то там в отладчике (отладчики бы поотбирал)

RedPossum ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.