Поиск диапазона дат Jodatime groovy / grails с преобразованием TimeZone - PullRequest
1 голос
/ 24 марта 2010

В настоящее время я храню значения Joda DateTime (Datetime + TimeZone) в базе данных.

То, что я хочу сделать, захватить 24-часовые записи, основанные на часовом поясе пользователя, а не на времени UTC. И.Е. Я хочу получить записи между 00: 00GMT-24: 00GMT для людей с часовым поясом GMT и 00: 00PST-24: 00PST для людей с часовым поясом PST.

Теперь я не думаю, что смогу сделать это в запросе HQL, поскольку, очевидно, HQL не собирается выполнять преобразование DateTime.toDateTime (toZone) для меня. Так можно ли выполнить такой поиск диапазона в groovy / grails?

1 Ответ

1 голос
/ 24 марта 2010

Я подумал об этом немного больше, и решение могло бы состоять в том, чтобы атаковать его по-другому. Вместо того, чтобы пытаться выполнить toDateTime (зона) на уровне гибернации, сделайте это на более высоком уровне, то есть при создании критериев поиска начала-> конца;

    DateTimeZone toZone = DateTimeZone.forID("Europe/London");
    DateTime now = new DateTime()
    DateTime today = new DateTime(now.year, now.monthOfYear, now.dayOfMonth, 0, 0, 0, 0)
    DateTime yesterday = today.minusDays(1)

    def queryStr = "from JODATesting j where j.thedate > :date1 and j.thedate < :date2"
    for (JODATesting joda: JODATesting.executeQuery(queryStr, [date1: yesterday, date2: today]) ) {
        println("##### Joda"+joda.id +"=" +joda.thedate.toDateTime(toZone));
    }
...