metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-02-16 12:54 am

Ох, какой ад

в Java c датой и временем.
Конкретно, чтобы на Clojure засунуть в jdbc параметр дату, пришлось перерыть весь гугл, исходники jaybird (firebird jdbc драйвера), внутренности joda-time и ее кложурной обертки clj-time

http://www.paullegato.com/blog/clojure-joda-sql-date-time/

(defn to-sql-date [date]
"Convert any Joda-readable date object (including a string) to a java.sql.Date"
(java.sql.Date. (.. (LocalDate. date) toDateMidnight toInstant getMillis)))

Основной затык - только в org.joda.time.LocalDate нормально сделана дата, без времени и временных зон. А jdbc драйвер понимает только java.sql.Date и вроде еще пару вариаций на тему "эпоха в long"

[identity profile] metaclass.livejournal.com 2012-02-16 05:01 pm (UTC)(link)
йода очень гуманен.

[identity profile] sergiej.livejournal.com 2012-02-16 05:14 pm (UTC)(link)
Йода супер.
Недавно работали с системой, в которой в очередной версии "проапгрейдили" внутренний тип данных Date (который был "тупой" набор трёх полей год-месяц-день с опциональной зоной) в "совместимый" с джавовским - который держит на самом деле время. Столько матерщизны собрали, если только время на клиенте не совпадает с временем на сервере - все клиенты рождаются вчера или завтра, все контракты подписаны "вчерашним днём", условленные даты в рамках контрактов попролетали на один день. Да что там другая зона, достаточно перейти на летнее/зимнее время и день перескакивает.
Не знаю как в оперденях, но обычный бизнес это разносит вдребезги.
Ад усугубляется тем, что куча всяких батчей тянет/пихает данные в другие системы как раз в районе полуночи, и разнос по датам - гарантирован. Особенно когда данные передаются XML, которые другая сторона парсит ещё добавляя и своё понимание к проблематике даты.

[identity profile] http://users.livejournal.com/_windwalker_/ 2012-02-22 09:05 pm (UTC)(link)
что может быть проще времени... (ц) не мой.

[identity profile] sergiej.livejournal.com 2012-02-22 09:30 pm (UTC)(link)
Да, я тоже всегда отвечаю фразой из Саймака. А потом вздыхаю, опрокидываю мысленно сто грамм и начинаю долго индусам объяснять что такое время :) Казалось бы что пациенты, которые живут в часовом поясе на полчаса отличающимся от соседей всё должно быть понятно лучше других... но почемуто всегда непонятно.
Говорят (индусы) у них в языках нет прошлого и будущего, вернее оно одним словом както говорится. Вобчем что вчера что завтра - всё одна маньяна

[identity profile] http://users.livejournal.com/_windwalker_/ 2012-02-22 09:44 pm (UTC)(link)
ой-вей, индусы это наше всё.

[identity profile] sergiej.livejournal.com 2012-02-22 09:50 pm (UTC)(link)
Как говорит один мой коллега: они такие неловкие, ка детки.