Javascript 如何在启动或即将结束setinterval函数时查找开始和/或结束时间戳

Javascript 如何在启动或即将结束setinterval函数时查找开始和/或结束时间戳,javascript,jquery,timestamp,setinterval,tampermonkey,Javascript,Jquery,Timestamp,Setinterval,Tampermonkey,我试着用Tampermonkey为我经常访问的网站编写脚本,以便记录我的船只的移动情况。 网站生成了一个表,其中包含当前的移动,代码如下: <table class="movements_table"> <tbody> <tr id="moveInfo815198" class="own"> <td><span title="Arrival time">1D 8h 3m</span></td&g

我试着用Tampermonkey为我经常访问的网站编写脚本,以便记录我的船只的移动情况。
网站生成了一个表,其中包含当前的移动,代码如下:

<table class="movements_table">
<tbody>
    <tr id="moveInfo815198" class="own">
        <td><span title="Arrival time">1D 8h 3m</span></td>
        <td class="ships">200</td>
        <td class="quantity">200,000</td>
        <td title="Origin" class="source">Town1</td>
        <td title="Target" class="target">Town2</td>
    </tr>
    <tr id="moveInfo815199" class="own">
        <td><span title="Arrival time">5D 3m 42s</span></td>
        <td class="ships">50</td>
        <td class="quantity">50,000</td>
        <td title="Origin" class="source">Town1</td>
        <td title="Target" class="target">Town2</td>
    </tr>
</tbody>
</table>
通过解析上述代码,结果如下:

var movements = [
                 [815198,endtimeofsetInterval1,200,200000,Town1,Town2],
                 [815199,endtimeofsetInterval2,50,50000,Town1,Town2]
];
项目EndTimeOfSetterVal1EndTimeOfSetterVal2应以毫秒为单位,并应写入HTML代码中的某个位置。
一个简单的解决方案是将到达时间从天、小时、分钟、秒转换为毫秒,再加上现在的毫秒。
此解决方案的问题在于,每次到达时间仅给出其三个部分,就像第一次移动(1D 8h 3m)。
因此,如果我将前一个转换为毫秒,这将是86400000,但也可能是86459000或介于两者之间,因为不显示到达时间的秒数。
这意味着我要记录的EndTimeOfSetterVal1将不是正确的,并且计算过程中可能会丢失多达59秒。
这就是为什么我想找到用于更新上表标记的实际时间戳

另外,我只对我的脚本的谷歌浏览器兼容性感兴趣


有没有办法找出这些项目在HTML代码中的位置?

我不确定这是否能解决您的问题,但您可以简单地向JavaScript询问您的当前时间,为您的元素设置
timestamp
属性,并按如下方式更新它:

function getTimestamp() {
  return new Date().getTime();
}

setInterval( ()=>{
  let element = document.getElementById('moveInfo815198').setAttribute("timestamp", getTimestamp())
}, 1000)


如果您想更新到达时间,您需要知道确切的到达日期和时间,例如-2018年5月20日13:45:25。然后,您可以简单地创建一个函数,该函数将从当前时间开始计算小时数、分钟数、秒数。

首先,我不想为每个移动创建时间戳属性,我想在代码中找到它,但我不知道在哪里可以找到它。第二,我不想更新到达时间,也不知道确切的到达时间,我只想以毫秒为单位的时间戳格式找到它,并将其与每个移动的其余信息一起记录在JSON中。不,没有时间戳只是因为使用了
setInterval
(或类似)。如果存在“时间戳”,则它必须位于页面的HTML和/或页面的AJAX调用中。。。你的预期结果是什么?用添加到此问题的HTML代码模拟它。您是否试图将“到达时间”转换为“2018年5月10日星期四10:25:03 GMT+0700”?如果是这样的话,请非常精确地说明所涉及的时区。如果您还提供了一个指向目标页面的链接,那将是最好的。我刚刚详细解释了(我相信)在记录了表的数据之后我所期望的结果。希望它更容易理解。如果有一个“真正的时间戳”发送到(或在)该页面,它将在该页面的XHR调用中。打开控制台并转到“网络”选项卡以查看这些内容。我们无法帮助您找到它,除非我们看到该页面。该页面是游戏Ikariam和军事顾问中的移动表。该游戏看起来使用Flash,这使事情变得非常复杂。我们必须创建一个帐户,并在那里播放,我们可以看到你正在引用的页面——这对于一个所谓的问题来说太多了。。。同样根据服务条款:
不允许使用软件或脚本以牺牲其他玩家的利益。这包括机器人、宏和其他自动操作。
function getTimestamp() {
  return new Date().getTime();
}

setInterval( ()=>{
  let element = document.getElementById('moveInfo815198').setAttribute("timestamp", getTimestamp())
}, 1000)