Метод, в котором возникла проблема
Код: Выделить всё
fun getRecentOrdersByUser(user: User): Pair {
val zoneId = getZoneIdFromCountry(user.address.country)
val today = LocalDate.now(zoneId)
val yesterday = today.minusDays(1)
val todayOrder = getUserOrderByStatusAndDate(user, zoneId, date = today)
val yesterdayOrder = getUserOrderByStatusAndDate(user, zoneId, date = yesterday)
return yesterdayOrder to todayOrder
}
Код: Выделить всё
fun getUserOrderByStatusAndDate(
user: User,
zoneId: ZoneId,
status: OrderStatus = OrderStatus.CONFIRMED,
date: LocalDate = LocalDate.now(zoneId),
): Order? {
val (startDateTime, endDateTime) = getDateTimeRangeLocal(date, zoneId)
return orderRepository.findOrderByUserAndStatusAndOrderPlacedDate(
user = user,
status = status,
startDate = startDateTime,
endDate = endDateTime,
)
}
fun getDateTimeRangeLocal(date: LocalDate, zoneId: ZoneId): Pair {
val startDateTime = date
.atStartOfDay(zoneId)
.withZoneSameInstant(ZoneOffset.UTC)
.toOffsetDateTime()
val endDateTime = date
.atTime(23, 59, 59, 999_999_999)
.atZone(zoneId)
.withZoneSameInstant(ZoneOffset.UTC)
.toOffsetDateTime()
return startDateTime to endDateTime
}
Код: Выделить всё
@Query("SELECT o FROM Order o WHERE o.user = :user AND o.status = :status AND o.orderPlacedDate >= :startDate AND o.orderPlacedDate
Подробнее здесь: [url]https://stackoverflow.com/questions/79290511/how-to-correctly-retrieve-yesterdays-order-in-africa-algiers-timezone-when-usin[/url]