Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 两个日期之间的巨大时间间隔。现在()_Javascript_Date - Fatal编程技术网

Javascript 两个日期之间的巨大时间间隔。现在()

Javascript 两个日期之间的巨大时间间隔。现在(),javascript,date,Javascript,Date,情况: 我已经创建了一个1小时的垃圾邮件时间限制 当用户发布时,当前时间Date.now保存在user.last中 当他再次发帖时,我用Date.now获取当前时间,并将其与user.last进行比较 问题: 问题如下: 我在大约1分钟内发布了两次 根据我的代码控制台输出,两篇文章之间的时间差大于1小时 问题: 我做错了什么?我确实将env TZ设置为UTC 代码: 控制台: 编辑: 用户模型 /** * User Schema */ var UserSchema = new Schema(

情况:

我已经创建了一个1小时的垃圾邮件时间限制

当用户发布时,当前时间Date.now保存在user.last中

当他再次发帖时,我用Date.now获取当前时间,并将其与user.last进行比较

问题:

问题如下:

我在大约1分钟内发布了两次

根据我的代码控制台输出,两篇文章之间的时间差大于1小时

问题:

我做错了什么?我确实将env TZ设置为UTC

代码:

控制台:

编辑:

用户模型

/**
 * User Schema
 */
var UserSchema = new Schema({

  //SOME CODE

  last: {
    type: Date
  },

  //SOME CODE

});

问题是用户记录实际上没有被保存。您的代码保存文章,然后设置用户的.last属性,但在任何情况下都不会为保存文章的用户设置Mongoose模型Article.user.save

这意味着.last将保持它最初创建时的状态,因此记录的日期差将单调增加

以下是重要的一点:

article.save(function(err) {
  if (err) {
    res.status(422).send({message: errorHandler.getErrorMessage(err)});
  } else {
    if (article.user) {
      article.user.last = Date.now();
      article.user.save(function (err) {
        if (err) res.status(500).send({message: 'Database error'});
        else res.json(article);
      }
    } else {
      res.status(401).send({message: 'User is not signed in'});
    }
  }
});

如果你使用console.logarticle.user.last,你会得到什么?@jonmrich例如:2017年2月7日星期二03:30:49 GMT+0000 UTC当这个console.logDATE的区别是什么:+Date.now-article.user.last;给你一个数字吗?@jonmrich这是你目前在我的问题中看到的结果。这里有些东西不合算。article.user.last=Date.now将article.user.last设置为数字,而不是日期。但是下一行调用article.user.last.getTime,这将在任何JS运行时抛出一个错误。最近一次记录的新数据是如何记录的?我认为单调递增是一种矛盾修饰法。@RobG我不这么认为:D单调地表示:一个函数或数量的变化,其变化方式要么从不减少,要么从不增加。单调递增意味着它总是递增而从不递减。这实际上是数学分析课上经常使用的一个术语,因为有很多单调递增函数:D@RobGWolfram Alpha:@Coder1000这是重点,这个术语应用不正确。单调应该意味着永不改变,或只有一个值,因此单调递增的矛盾。现在已经有了一个术语,只能向上或向下移动一个方向:单向。但我不能告诉数学家如何命名他们的概念-@罗布:哦!嗯:-
/**
 * User Schema
 */
var UserSchema = new Schema({

  //SOME CODE

  last: {
    type: Date
  },

  //SOME CODE

});
article.save(function(err) {
  if (err) {
    res.status(422).send({message: errorHandler.getErrorMessage(err)});
  } else {
    if (article.user) {
      article.user.last = Date.now();
      article.user.save(function (err) {
        if (err) res.status(500).send({message: 'Database error'});
        else res.json(article);
      }
    } else {
      res.status(401).send({message: 'User is not signed in'});
    }
  }
});