Проверьте это:
val newDate = pickUpDate.hourOfDay().setCopy(hour)
.minuteOfHour().setCopy(minutes)
.secondOfMinute().setCopy(0)
Или даже лучше:
fun DateTime.setDayTime(hourOfDay: Int? = null, minuteOfHour: Int? = null, secondOfMinute: Int? = null) {
var dateTime = this
if(hourOfDay != null) {
dateTime = dateTime.hourOfDay().setCopy(hourOfDay)
}
if(minuteOfHour != null) {
dateTime = dateTime.minuteOfHour().setCopy(minuteOfHour)
}
if(secondOfMinute != null) {
dateTime = dateTime.secondOfMinute().setCopy(secondOfMinute)
}
return dateTime
}
Теперь вы можете сделать
val newDate = pickUpDate.setDayTime(hourOfDay = hour, minuteOfHour = minutes, secondOfMinute = 0)
Причинапочему ваш пример не сработал, потому что apply
возвращает текущую дату, но каждый вызов setCopy
создает новый экземпляр, поэтому дата является неизменной и фактически не изменяется на месте.Думаю, именно так Joda-Time решила противостоять тому, что изменение Календаря в одном месте не должно влиять на другие места.