solr NOW/DAY and timezones



我又遇到了一个时区问题。我知道solr以UTC时区存储日期我知道我的用户来自-比如纽约,tz=EST = UTC-4h

问题:我想为用户显示今天的数据。

我通过查询

date:[NOW/DAY TO NOW/DAY+1DAY]

。这将给我错误的结果,因为我想从一天的EST时间开始查询,而不是UTC。

问:是否有一种方法仍然使用NOW/DAY和调整时区,或者我们总是需要查询UTC日期字符串?

一种方法是,您知道时区差异。你知道solr是怎么储存的。因此,当一个请求来临时,您可以添加/减去时差,这将保持不变。

这个逻辑只适用于一个时区。要缩放它,你可以有一个通用的映射,你可以获得用户时区,然后将它映射到UTC时区。

您可以在java中尝试使用

    SimpleDateFormat sdf = new SimpleDateFormat(DATEFORMAT);
    String userTimeZone = DateTimeZone.forID("Pacific/Midway");;
    sdf.setTimeZone(dtZone.toTimeZone());
    String currentTime = sdf.format(new Date());
    String dateRange = dateInString.replaceAll("NOW", currentTime);

我在这里使用了joda日期时间。你可以使用java Date或Calendar。

这将被转换成这样的内容

date:[2016-05-30T01:51:00.841Z/DAY TO 2016-05-30T01:51:00.841Z/DAY+1DAY]

相关内容

  • 没有找到相关文章

最新更新