我在试着在几秒钟内得到两个日期之间的差异。逻辑是这样的:
我之所以这样做,是因为最终的日期/时间取决于其他一些变量,它永远不会相同(这取决于用户做某事的速度),而且我还会为其他事情存储初始日期。
我一直在尝试这样的东西:
var _initial = new Date(),
_initial = _initial.setDate(_initial.getDate()),
_final = new Date(_initial);
_final = _final.setDate(_final.getDate() + 15 / 1000 * 60);
var dif = Math.round((_final - _initial) / (1000 * 60));
问题是我从来没有得到正确的区别。我试着除以24 * 60
,这会给我留下秒,但我从来没有得到正确的结果。那么我的逻辑有什么问题呢?我可能犯了一些愚蠢的错误,因为已经很晚了,但它困扰着我,因为我不能让它工作:)
发布于 2012-12-16 01:51:56
《守则》
var startDate = new Date();
// Do your operations
var endDate = new Date();
var seconds = (endDate.getTime() - startDate.getTime()) / 1000;
或者更简单的(endDate - startDate) / 1000
,就像评论中指出的那样,除非你正在使用typescript。
解释
您需要为Date
对象调用getTime()
方法,然后简单地减去它们并除以1000 (因为它最初是以毫秒为单位)。另外,当您调用getDate()
方法时,实际上获取的是一个介于1和31之间的整数(不是从零开始),而不是调用getTime()
方法获得的纪元时间,表示自1970年1月1日00:00以来的毫秒数
范围
根据与日期相关的操作是什么,您可能希望投资于集成库,如date.js或moment.js,这将使开发人员的工作变得更容易,但这只是个人偏好的问题。
例如,在moment.js中,我们会使用moment1.diff(moment2, "seconds")
,这很漂亮。
此答案的有用文档
发布于 2017-09-19 23:28:20
您可以使用new Date().getTime()
来获取时间戳。然后,您可以计算结束和开始之间的差异,并最终将时间戳ms
转换为s
。
const start = new Date().getTime();
const end = new Date().getTime();
const diff = end - start;
const seconds = Math.floor(diff / 1000 % 60);
发布于 2015-07-22 19:46:49
<script type="text/javascript">
var _initial = '2015-05-21T10:17:28.593Z';
var fromTime = new Date(_initial);
var toTime = new Date();
var differenceTravel = toTime.getTime() - fromTime.getTime();
var seconds = Math.floor((differenceTravel) / (1000));
document.write('+ seconds +');
</script>
https://stackoverflow.com/questions/13894632
复制相似问题