gpt4 book ai didi

java - Solrj 将我的日期从 UTC 格式化为 CEST

转载 作者:行者123 更新时间:2023-11-30 03:44:32 24 4
gpt4 key购买 nike

我刚刚发现我的应用程序中的日期字段存在问题。我有一个以 UTC 格式在 Solr 中索引的日期字段。例如,"parution_date": "2014-09-29T22:00:00Z",。当我使用数据透视表向 Solr 发出请求并且我想获取此值时,Solr 会将我的日期转换为 CET(我在欧洲)。这是我收到的同一文档的日期:Tue Sep 30 00:00:00 CEST 2014

正如您在此处看到的,它不会将日期保留为原始格式(UTC),而是转换日期 CEST。我想保留 UTC 格式,因为我使用这个字段来研究一些文档。

对于此请求,我使用了构面枢轴。这是我得到结果的方法:

for(PivotField pv : pivotFields){

Date value = (Date) pv.getValue();
String parutionDate = formatDate(value, DateHelper.DD_MM_YYYY_FORMAT);

}

getValue 方法返回一个对象,因此我必须将其转换为 Date 对象。

我看到一些解决方案:

  • 当我向 Solr 发出请求时,将我的 CEST 日期转换为 UTC,但我现在不知道该怎么做。我是 Solr 的初学者。
  • 或者将我的日期保留为 UTC 格式。

处理这个问题的最佳解决方案是什么?任何帮助,将不胜感激。

最佳答案

看来 Solr 与您的问题无关。

java.util.Date 有一个恼人的坏特性,该对象没有时区,但它的 toString 方法应用了 JVM 当前的默认时区。

最好的方法是避免使用 java.util.Date 和 .Calendar 类,因为它们非常麻烦。请改用 Joda-Time 库或与 Java 8 捆绑在一起的新 java.time 包(受 Joda-Time 的启发)。

Joda-Time 2.4 中的示例。

java.util.Date date = ( java.util.Date ) PC.getValue();
DateTime dateTimeUtc = new DateTime( date, DateTimeZone.UTC );
String output = dateTimeUtc.toString();

调整到本地区域。

DateTime dateTimeBerlin = dateTimeUtc.withZone( DateTimeZone.forID( "Europe/Berlin" ) );

关于java - Solrj 将我的日期从 UTC 格式化为 CEST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26065611/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com