DateTime的使用

1,java时间戳和unix时间戳

java中时间戳以毫秒为单位:System.currentTimeMillis()

mysql中时间戳使用unix时间戳,以秒为单位:SELECT UNIX_TIMESTAMP(NOW());

System.currentTimeMillis():1479185907737

SELECT UNIX_TIMESTAMP(NOW());1479185907

所以实际应用中不能直接用java毫秒的时间戳 直接和 mysql中unix时间戳对比,需先 /1000

2、solr时间 和 当地时间

solr中存储时间:2016-11-15T03:38:19Z ,是世界协调时间,即UTC零时区时间

而北京时间是东八区GMT+8 晚8小时,对应时间为 2016-11-15 11:38:19

那么,我们在solr中使用时间查询时,传入GMT+8时间,是不对的,需要将其转为UTC时间

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");

sdf.setTimeZone(TimeZone. getTimeZone( "UTC"));

3、时间查询区间

在mysql中使用unix时间查询比时间使用date类型查询效率更高,在查询时间区间上,使用between...and... 比 ...<...>...更让人喜欢,但between...and...是闭区间,包括两端

在solr中查询闭区间:[ ],包含两端

dateTime:['2016-11-15T03:38:19Z' TO '2016-11-16T03:38:19Z'] 

solr开区间是:{ }

dateTime:{'2016-11-15T03:38:19Z' TO '2016-11-16T03:38:19Z'}

你可能感兴趣的:(DateTime的使用)