solr NOW / DAY和时区

时间:2015-08-06 19:14:40

标签: datetime solr timezone

我再一次偶然发现了时区问题。我知道solr以UTC时区存储日期,我知道我的用户来自 - 让我们说纽约,tz = EST = UTC-4h

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

我通过查询

执行此操作
  

日期:[NOW / DAY TO NOW / DAY + 1DAY]

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

问:有没有办法继续使用NOW / DAY并调整时区,还是我们总是需要查询UTC日期字符串?

2 个答案:

答案 0 :(得分:0)

一种方法是,你知道时区差异。你知道solr如何存储它。因此,当请求到来时,您可以添加/减去时差,并且这将保持不变。

此逻辑仅适用于一个时区。要扩展它,您可以拥有一个通用的映射内容,您可以在其中获取用户时区,然后将其映射到UTC时区。这需要付出努力,但却是一次性活动。

答案 1 :(得分:0)

您可以在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:[2016-05-30T01:51:00.841Z/DAY TO 2016-05-30T01:51:00.841Z/DAY+1DAY]