at Time
Combines this date's components with the specified time components into a LocalDateTime value.
For finding an instant that corresponds to the start of a date in a particular time zone, consider using LocalDate.atStartOfDayIn function because a day does not always start at the fixed time 0:00:00.
Pitfall: since LocalDateTime is not tied to a particular time zone, the resulting LocalDateTime may not exist in the implicit time zone. For example, LocalDate(2021, 3, 28).atTime(2, 16, 20)
will successfully create a LocalDateTime, even though in Berlin, times between 2:00 and 3:00 do not exist on March 28, 2021 due to the transition to DST.
Samples
import kotlinx.datetime.*
import kotlinx.datetime.format.*
import kotlin.random.*
import kotlin.test.*
fun main() {
//sampleStart
// Constructing a LocalDateTime value from a LocalDate and a LocalTime
val date = LocalDate(2024, Month.APRIL, 16)
val dateTime = date.atTime(13, 30)
check(dateTime == LocalDateTime(2024, Month.APRIL, 16, 13, 30))
//sampleEnd
}
Combines this date's components with the specified LocalTime components into a LocalDateTime value.
For finding an instant that corresponds to the start of a date in a particular time zone consider using LocalDate.atStartOfDayIn function because a day does not always start at the fixed time 0:00:00.
Pitfall: since LocalDateTime is not tied to a particular time zone, the resulting LocalDateTime may not exist in the implicit time zone. For example, LocalDate(2021, 3, 28).atTime(LocalTime(2, 16, 20))
will successfully create a LocalDateTime, even though in Berlin, times between 2:00 and 3:00 do not exist on March 28, 2021, due to the transition to DST.
Samples
import kotlinx.datetime.*
import kotlinx.datetime.format.*
import kotlin.random.*
import kotlin.test.*
fun main() {
//sampleStart
// Constructing a LocalDateTime value from a LocalDate and a LocalTime
val date = LocalDate(2024, Month.APRIL, 16)
val time = LocalTime(13, 30)
val dateTime = date.atTime(time)
check(dateTime == LocalDateTime(2024, Month.APRIL, 16, 13, 30))
//sampleEnd
}