Solr关于日期类型的转换示例

一、Solr中的日期格式

Solr是一个高性能的、基于Lucene的企业级全文检索服务器,SolrJ是其提供的用于Java程序访问的API,本文示例即采用的是SolrJ。

在Solr中,日期类型的数据有非常严格的格式限制,为:

YYYY-MM-DDTHH:mm:ssZ
//YYYY, MM, DD, HH, mm, ss分别为年、月、日、时(24)、分、秒;
//只有ss可以带小数,但只精确到0.001位,即毫秒级;
//Z表示时区为UTC,不能更换。

在为文档创建索引时,Solr会根据时区差异,将当地时间转换为上述格式。

比如文档中某时间类型字段为“2019-09-06 10:20:30”,则直接查询到的结果为:

2019-09-06T02:20:00Z
//本地时区为UTC+8,所以有相差8小时。

二、消除时区影响的处理

为消除时区影响,可以利用SompleDateFormat类来进行转换,代码如下:

   String param = "2019-09-06T02:20:30Z";
   SimpleDateFormat sdfSolr = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
   sdfSolr.setTimeZone(TimeZone.getTimeZone("UTC"));
   Date date = sdfSolr.parse(arg);
   SimpleDateFormat sdfLocal = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   sdfLocal.setTimeZone(TimeZone.getDefault());
   System.out.println("Local Time=" + sdfLocal.format(date));

执行结果为:“2019-09-06 10:20:30”。

三、使用toString后的处理

项目中因为多加了一个中间层,对查询到的日期使用了toString()方法,则得到的结果变为CST格式:Fri Sep 06 02:20:30 CST 2019。为此,需对SompleDateFormat做些变化。代码如下:

   String param = "Fri Sep 06 02:20:30 CST 2019";
   SimpleDateFormat sdfCst = new SimpleDateFormat("EEE MMM dd HH:mm:ss ZZZ yyyy", Locale.US);
   Date date = sdfCst.parse(arg);
   SimpleDateFormat sdfLocal = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   sdfLocal.setTimeZone(TimeZone.getDefault());
   System.out.println("Local Time=" + sdfLocal.format(date));

执行结果仍为:“2019-09-06 10:20:30”。

 

转载于:https://www.cnblogs.com/wggj/p/11472574.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值