如何比较Parse Cloud中的2个Date字段? [英] How to compare 2 Date fields in Parse Cloud?

查看:79
本文介绍了如何比较Parse Cloud中的2个Date字段?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在如下所示的云函数中,我在比较日期时遇到问题:

In a cloud function like the following, I am having problems comparing dates:

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();

不起作用.

在这种情况下,用来比较类型为Date的两个字段dateFieldOne和dateFieldTwo的语法是什么?

What is the syntax I am supposed to use in this context, to compare the two fields dateFieldOne and dateFieldTwo of type Date?

推荐答案

时刻库是您的朋友:

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,您还可以查询所需的粒度级别,例如:

With Moment you can also query for the level of granularity you need, e.g.:

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 并将其放在目录.

UPDATE: Note that isBefore() and isAfter() are only available after version 2.0 and Parse.com is using 1.7. If you want to have access to these methods, you can download moment.js and place it in your /cloud directory.

这篇关于如何比较Parse Cloud中的2个Date字段?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆