如何匹配和比较两个时间戳?

时间:2017-06-08 14:21:58

标签: javascript angularjs firebase

问题

我有一个奇怪的情况:我使用firebase作为DB和JS / Angular开发我的应用程序。我正面临这种情况,我需要客户端检查是否达到了事件的日期,如果是,请从服务器中删除此事件。

我猜这个问题不是来自触发器,而是来自我的时间戳操作。

从现在开始,我用这个来填补结束日期:

// The date format of x is : 2017-06-08T16:10
    var x = document.getElementById("dateEvent").value;
    $scope.endDate = new Date(x).getTime();
<label class="item item-select item-input item-light"><input type="datetime-local" id="dateEvent"></label>

测试

为了测试是否达到了结束日期,我正在使用这种方法:

// Moment.now() and endDate are timestamps, endDate comes from the HTML input
    
    if(moment.now() > endDate)
    {
      // Do stuff
    }
    
    
// Also tried to get a timestamp from the Firebase server but before using it, it is necessary to store it, so this doesn't work...

 var timeServ = firebase.database.ServerValue.TIMESTAMP;

    if(timeServ > endDate)
    {
      // Do stuff
    }

关键是,这个(第一个解决方案是moment.now())正在运行,但出于某种原因,如果没有人(客户端)在正确的时间连接,我的事件将保留在数据库中并变为“不朽”。

另一个奇怪的事情是,我正在使用非常大的时间戳,例如这两个:1496926321039和1496933687000.我不确定这是正常的,因为当我尝试使用在线翻译检查时时间戳 - &gt;到 - &gt;日期“它给了我一个不可能的约会......

编辑:

嗯......我发现了问题。当我在我的笔记本电脑上测试应用程序时它可以正常工作,但是从我的iphone开始,在endDate上添加了2个小时,当然时间戳可能不正确。

所以现在,我想弄清楚如何在不使用new Date(x).getTime();的情况下将UTC日期转换为时间戳。你知道JS或Angular函数可以处理吗?

0 个答案:

没有答案