在如下的云功能中,我在比较日期方面遇到了问题:
Parse.Cloud.define(“myCloudFunction”, function(request, response)
{
var query = new Parse.Query(“MyClass”);
query.find
({
success: function(resultList) {
var today = new Date();
for (var i = 0; i < resultList.length; ++i) {
if (resultList[i].get(“dateFieldOne”)>resultList[i].get(“dateFieldTwo”)) {
// Do something!!
} else {
// Do some other thing!!
if (resultList[i].get(“dateFieldOne”)>today) doOneMoreThing();
}
}
response.success(resultList);
},
error: function() {
response.error("Things have gone wrong.”);
}
});
});
行:
if (resultList[i].get(“dateFieldOne”)>resultList[i].get(“dateFieldTwo”))
if (resultList[i].get(“dateFieldOne”)>today) doOneMoreThing();
无效。
我应该在这个上下文中使用什么语法来比较dateFieldOne和DateFieldTwo两个字段的类型Date?
答案 0 :(得分:4)
Moment library是你的朋友:
var moment = require('moment');
Parse.Cloud.define("myCloudFunction", function(request, response) {
var query = new Parse.Query(“MyClass”);
query.find
({
success: function(resultList) {
var today = new moment();
for (var i = 0; i < resultList.length; ++i) {
var dateFieldOne = moment(resultList[i].get("datefieldOne"));
var dateFieldTwo = moment(resultList[i].get("dateFieldTwo"));
if (dateFieldOne.isAfter(dateFieldTwo)) {
// Do something!!
} else {
// Do some other thing!!
if (dateFieldOne.isAfter(today)) doOneMoreThing();
}
}
// ...etc...
使用Moment,您还可以查询所需的粒度级别,例如:
var today = moment();
var tomorrow = moment().add(1, 'days');
// assuming today is 3pm on 2014-07-09
moment("2014-07-09T20:00:00").isBefore(today); // false (8pm is not before 3pm)
moment("2014-07-09T10:00:00").isBefore(today); // true (10am is before 3pm)
moment("2014-07-09T10:00:00").isBefore(today, 'day'); // false (ignoring time, they are equal)
moment("2014-07-09T10:00:00").isBefore(tomorrow, 'day'); // true
moment("2014-07-09T20:00:00").isBefore(tomorrow, 'day'); // true
更新:请注意,isBefore()
和isAfter()
仅在版本2.0
之后可用且Parse.com使用1.7
。如果您想要访问这些方法,可以下载moment.js并将其放在/cloud
目录中。
答案 1 :(得分:1)
对于此代码
for (var i = 0; i < resultList.length; ++i) {
if (resultList[i].get(“dateFieldOne”)>resultList[i].get(“dateFieldTwo”)) {
// Do something!!
} else {
// Do some other thing!!
if (resultList[i].get(“dateFieldOne”)>today) doOneMoreThing();
}
}
首先将其转换为unix时间戳,然后直接比较它们。
for (var i = 0; i < resultList.length; ++i) {
if (new Date(resultList[i].get(“dateFieldOne”)).getTime()>new Date(resultList[i].get(“dateFieldTwo”)).getTime()) {
// Do something!!
} else {
// Do some other thing!!
if (new Date(resultList[i].get(“dateFieldOne”)).getTime()>today) doOneMoreThing();
}
}