比较两个时间戳日

时间:2013-12-17 12:25:44

标签: java javascript couchdb

在我的应用程序中,我设计了一个Spring调度程序,它应该选择具有“abcDate”字段且明天的时间戳为值的记录。

我在我的java应用程序中计算了时间戳,

Calendar cal = Calendar.getInstance();
            cal.add(Calendar.DAY_OF_YEAR, 1);
            long abcTimeStamp = DateUtils.convertDateTimeToUTCzone(cal.getTimeInMillis()); 

这个值是:1387348986,即12/18/13 @ UTC时间:上午6:43:06

在DB中我有一条记录,时间戳为1387365854,即12/18/13 @ 11:24:14 UTC。

我正在使用沙发DB map reduce视图,并将时间戳值作为视图的键传递。

但由于两个时间戳的时间不同,我无法获取此记录。有没有办法只匹配时间戳中的天数并过滤视图中的记录?

3 个答案:

答案 0 :(得分:1)

CouchDB的startkeyendkey概念在这里非常有用。

听起来你已经有了一个观点,但为了完整起见,让我们假设它看起来像这样:

{
   "_id": "_design/mydesign",
   "_rev": "1-088646f81629ce559b6d9772c6116113",
   "views": {
       "by_timestamp": {
           "map": "function(doc) { emit(doc.timestamp, doc); }"
       }
   }
}

你有一个名为'timestamps'的数据库,在本地运行一些文件,如下所示:

$ curl localhost:5984/timestamps/_design/mydesign/_view/by_timestamp

要获取一系列文档,请添加startkeyendkey查询参数:

$ curl localhost:5984/timestamps/_design/mydesign/_view/by_timestamp\?startkey\=1387348986\&endkey\=1387365854

现在要获取这些参数,您需要明天开始和明天结束的时间戳。 This answer涵盖java.util.Calendar API和Joda-Time。

有关查找许多内容的更多信息,请查看CouchDB令人敬畏的new docs

答案 1 :(得分:0)

检查Moment.js。它是一个用于解析,验证,操作和格式化日期的javascript日期库。

答案 2 :(得分:0)

您可以使用Joda time API。它有更多的功能。

从日历中,您可以使用方法getTime()获取日期。您可以将此日期用于上述API中的对象。或者使用毫秒:

...
DateTime dt = new DateTime(millis);
int day = dt.getDayOfYear();
...