Как суммировать 2 значения DateTime в joda-time (одно содержит дату и нулевое время, а другое содержит время и нулевую дату)?

В моей программе на Scala 2.8 я использую joda-time с его оболочкой scala-time. У меня есть 2 значения DateTime, одно для даты (с нулевыми полями времени) и одно для времени (с нулевыми полями даты) (причина разделения - архитектура хранилища).

Как мне получить другое значение DateTime с частями даты и времени, установленными из исходной пары?


person Ivan    schedule 08.09.2010    source источник


Ответы (1)


Вы должны использовать LocalDate для даты и LocalTime для времени. Это подходящие типы для даты и времени соответственно. Вы можете получить каждый из DateTime с помощью DateTime.toLocalDate() и DateTime.toLocalTime(), если вы должны использовать их как DateTime значения для начала. В идеале вы бы вообще не строили DateTime, пока не получили бы оба бита по отдельности :)

Тогда вы можете LocalDate.toDateTime(LocalTime, DateTimeZone).

person Jon Skeet    schedule 08.09.2010
comment
Я не хочу МЕСТНОГО времени. В этом проекте я использую только строгое Zulu UTC. - person Ivan; 09.09.2010
comment
@ Иван, LocalDate is an immutable datetime class representing a date without a time zone. - person matt b; 09.09.2010
comment
у меня это не работает, я получаю эту ошибку: значение toDateTime не является членом scala.slick.lifted.Column [com.github.nscala_time.time.Imports.LocalDate] - person Anna; 22.01.2014
comment
@Anna: Ну, судя по всему, это не вызов toDateTime на LocalDate - он пытается вызвать его на _3 _... Я не знаю Scala и не знаю об оболочке nscala_time, но toDateTime определенно существует на LocalDate по времени Джода. - person Jon Skeet; 22.01.2014