我再一次偶然发现了时区问题。我知道solr以UTC时区存储日期,我知道我的用户来自 - 让我们说纽约,tz = EST = UTC-4h
问题: 我想为用户显示今天的数据。
我通过查询
执行此操作日期:[NOW / DAY TO NOW / DAY + 1DAY]
。这会给我错误的结果,因为我想从EST时间开始查询,而不是UTC。
问:有没有办法继续使用NOW / DAY并调整时区,还是我们总是需要查询UTC日期字符串?
答案 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]