【问题标题】:check current timestamp present between two timestamp检查两个时间戳之间的当前时间戳
【发布时间】:2020-04-23 15:59:27
【问题描述】:

我有一个发送两个时间戳开始时间戳和结束时间戳我必须检查当前时间戳是否在开始和结束时间戳之间然后我必须将变量值更改为 true 否则为 false。

{
    "start_time":"2020-04-23T06:49:55.510Z",
    "end_time":"2020-04-23T20:49:55.510Z",
    "form_type":"5e54b4e4d76bf807091043ae", 
    "book_id":"5e56469d42f0c5647625fd45",
} 

我正在从 mongodb 中发送数据

类似这样的sudo代码

var check = false
currentTime = Date.now()
if(currentTime < Start_time  && currentTime < end_time)
{
   check = true
}

我无法对此进行查询。

【问题讨论】:

标签: javascript node.js mongodb mongoose mongodb-query


【解决方案1】:
currentTime = new Date();
db.model.find({"start_time" : { $gte : new 
  ISODate(currentTime.toISOString()) },
"end_time" : { $lte : new 
  ISODate(currentTime.toISOString()) }
});

你能试试这个 Mongo 查询并检查它是否有效吗?请根据需要更改代码。

【讨论】:

    【解决方案2】:

    您可以为此使用 moment.js。

    时刻().utc();

    这将返回当前时间戳。

    然后你需要将你的时间戳转换成一个时刻对象。

    compare_time = moment.utc('2020-04-21T06:49:55.510Z', 'YYYY-MM-DD[T]HH:mm:ss[Z]');
    

    之后使用“isAfter()”将其与当前时间进行比较。这是一个工作示例

    var current = moment.utc();
    var compare_time = moment.utc('2020-04-21T06:49:55.510Z', 'YYYY-MM-DD[T]HH:mm:ss[Z]');
    current.isAfter(compare_time); // true
    

    【讨论】:

      【解决方案3】:

      你需要像这样比较 Date 对象

      var obj={
          "start_time":"2020-04-23T06:49:55.510Z",
          "end_time":"2020-04-23T20:49:55.510Z",
          "form_type":"5e54b4e4d76bf807091043ae", 
          "book_id":"5e56469d42f0c5647625fd45",
      } 
      var check=Date.parse(obj.start_time)<Date.now() && Date.now()<Date.parse(obj.end_time)
      

      【讨论】:

        【解决方案4】:

        Date 对象上使用.getTime() 进行相当简单的比较。

        const jsonObject = {
          "start_time": "2020-04-23T06:49:55.510Z",
          "end_time": "2020-04-23T20:49:55.510Z",
          "form_type": "5e54b4e4d76bf807091043ae",
          "book_id": "5e56469d42f0c5647625fd45",
        }
        
        const startTime = new Date(jsonObject.start_time).getTime();
        const endTime = new Date(jsonObject.end_time).getTime();
        const currentTime = new Date().getTime();
        
        console.log(startTime, currentTime, endTime);
        console.log(startTime <= currentTime && currentTime <= endTime);

        【讨论】:

        • @lakshitsingh 很高兴,如果其中一个答案解决了您的问题,请解决问题。
        【解决方案5】:

        您可以使用 mongodb-aggregation。 您的查询如下:

        currentTime = new Date()
        db.model.aggregate([
        {
            $set: {
                value: {
                    $cond: [{currentTime: {$gt: "$start_time", $lt: "$end_time"}}, true, false]
                }
            }
        }
        ])
        

        【讨论】:

          猜你喜欢
          • 2021-09-09
          • 1970-01-01
          • 1970-01-01
          • 2022-01-23
          • 2014-03-05
          • 2014-07-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多