Search code examples
datetimesolrtimezonesolrj

Solr does not retrieve the date correctly


I have some documents indexed in Solr that contain some timestamps, like that:

2017-10-21T11:53:33Z.

When I perform queries form Solr Admin UI, I get the correct information (the exact timestamps).

However, when I perform queries from SolrJ, I get the following timestamps:

Sat Oct 21 14:53:33 EEST 2017

The field that stores this timestamp has the following type: org.apache.solr.schema.TrieDateField

So the format and the timezone is changed. I read this post and this one and I understand that SolrJ takes into consideration the local timezone when it retrieves dates, but why is this happening?

Also, the format is changed and I don't want that! I want the exact same format that I input when I index dates to Solr.

How can I change this date format when I retrieve dates from Solr using SolrJ and how can I retrieve the exact values (the exact timezone) that I can see when I use Solr Admin UI?


Solution

  • SolrJ parses the response from Solr, converts string "2017-10-21T11:53:33Z" to a Date object and returns you it. By default, the timezone is printed in your local timezone (EEST), so it just a representation, but the date/time is the same. You can convert it and display in any timezone.

    For example see this answer: https://stackoverflow.com/a/22364501/937970

    Another option is to set a global timezone for your JVM, but this might affect the whole application:

    java -Duser.timezone=UTC ...
    

    When you make a query using Solr Admin UI it just returns you raw values, that's why you see the UTC value.