在IndexedDB上查询MomentJS日期AngularJS -日期vs字符串
Querying MomentJS dates on IndexedDB & AngularJS - Dates vs Strings
所以,我刚刚有一个很大的"哦,啪!"的时刻。
我正在使用MomentJS与AngularJS和IndexedDB在离线应用程序。
我所有的记录都是基于对象的日期属性用索引date_idx
存储的。
当我尝试使用以下代码基于日期运行查询时,问题出现了:
$scope.redoresults = function(){
$indexedDB.openStore('records', function(store){
$scope.upper = moment($scope.dates.endDate).format("DD[/]MM[/]YYYY");
$scope.downer = moment($scope.dates.startDate).format("DD[/]MM[/]YYYY");
var find = store.query();
find = find.$between($scope.downer, $scope.upper, false, false);
find = find.$index("date_idx");
store.eachWhere(find).then(function(e){
$scope.daterange = e;
console.log($scope.daterange);
});
});
};
查询输出奇怪的结果,有时正确,有时不正确。直到我意识到我实际上是在查询字符串,而不是日期。因此,在01/08/2016和31/08/2016之间的查询,仍然会向我提供包含20/09/2016的结果,因为作为一个数字,它确实在范围之间。
我觉得我在结构上遗漏了一些东西。
对于如何解决这个问题有什么建议吗?
我应该查询其他索引吗?但是我怎么比较日期呢?
- 将日期存储为日期,并使用日期查询。
- 或者,将日期存储为时间戳(例如date.getTime()),然后使用时间戳 进行查询
- 不要将日期存储为日期,然后用字符串date查询,这会产生垃圾。
- 不要将日期存储为字符串,然后用字符串日期查询,这会产生垃圾。字符串值按字典顺序比较,这很容易与日期的比较方式不同。
相关文章:
- AngularJs日期验证;我不适用于IE和Mozilla
- angularjs日期选择器,可动态设置最大日期和最小日期
- AngularJS 日期过滤器与$watchGroup
- 仅 angularjs 日期输入
- 有没有办法在没有本地时区的情况下使用 angularjs “日期”过滤器
- AngularJS 日期格式
- 具有时区选择功能的 AngularJS 日期选择器
- AngularJS日期过滤器firefox/safari问题
- MySQL中用于AngularJS日期过滤器过滤的日期格式
- AngularJS-日期未在IE8中转换
- AngularJS日期过滤器显示错误的日期
- 具有/Date(###########)格式的AngularJS日期筛选器
- AngularJS日期筛选器未生成结果
- AngularJS:日期输入只在Chrome中显示
- AngularJS日期过滤器将短日期格式转换为'M/d/y '标签/字符串
- 在IndexedDB上查询MomentJS日期AngularJS -日期vs字符串
- 使用日期集的AngularJS日期选择器
- 扩展angularjs日期过滤器的日期格式
- 用ng选项将C#日期时间格式化为AngularJS日期
- 禁用 Angularjs 日期选择器中的特定日期