在我的应用程序中,我设计了一个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视图,并将时间戳值作为视图的键传递。
但由于两个时间戳的时间不同,我无法获取此记录。有没有办法只匹配时间戳中的天数并过滤视图中的记录?
答案 0 :(得分:1)
CouchDB的startkey
和endkey
概念在这里非常有用。
听起来你已经有了一个观点,但为了完整起见,让我们假设它看起来像这样:
{
"_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
要获取一系列文档,请添加startkey
和endkey
查询参数:
$ 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();
...