我有一个奇怪的情况:我使用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函数可以处理吗?