[英]Get time difference between two dates in seconds
我试图在几秒钟内得到两个日期之间的差异。 逻辑是这样的:
我用日期来做它的原因是因为最终日期/时间取决于其他一些变量并且它永远不相同(它取决于用户做某事的速度)并且我还存储其他事情的初始日期。
我一直在尝试这样的事情:
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
,这会留给我几秒钟,但我从来没有做对。 那么我的逻辑有什么问题呢? 我可能犯了一些愚蠢的错误,因为已经很晚了,但令我困扰的是我无法让它工作:)
var startDate = new Date();
// Do your operations
var endDate = new Date();
var seconds = (endDate.getTime() - startDate.getTime()) / 1000;
或者更简单的(endDate - startDate) / 1000
如注释中所指出的,除非您使用打字稿。
您需要为Date
对象调用getTime()
方法,然后简单地减去它们并除以 1000(因为它最初以毫秒为单位)。 另外,当您调用getDate()
方法时,实际上是将月份中的某一天作为 1 到 31(不是基于零的)之间的整数,而不是从调用中获得的纪元时间getTime()
方法,表示自1970年1 月 1 日 00:00以来的毫秒数
根据您的日期相关操作,您可能希望投资集成诸如date.js或moment.js 之类的库,这使开发人员的工作变得更加轻松,但这只是个人喜好的问题。
例如在moment.js 中我们会做moment1.diff(moment2, "seconds")
这很漂亮。
您可以使用new Date().getTime()
来获取时间戳。 然后您可以计算 end 和 start 之间的差异,最后将ms
的时间戳转换为s
。
const start = new Date().getTime();
const end = new Date().getTime();
const diff = end - start;
const seconds = Math.floor(diff / 1000 % 60);
<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>
准确和快速将在几秒钟内给出输出:
let startDate = new Date()
let endDate = new Date("yyyy-MM-dd'T'HH:mm:ssZ");
let seconds = Math.round((endDate.getTime() - startDate.getTime()) / 1000);
下面的代码将以秒为单位给出时差。
var date1 = new Date(); // current date
var date2 = new Date("06/26/2018"); // mm/dd/yyyy format
var timeDiff = Math.abs(date2.getTime() - date1.getTime()); // in miliseconds
var timeDiffInSecond = Math.ceil(timeDiff / 1000); // in second
alert(timeDiffInSecond );
尝试使用高级编程语言中的专用函数。 JavaScript .getSeconds();
适合在这里:
var specifiedTime = new Date("November 02, 2017 06:00:00");
var specifiedTimeSeconds = specifiedTime.getSeconds();
var currentTime = new Date();
var currentTimeSeconds = currentTime.getSeconds();
alert(specifiedTimeSeconds-currentTimeSeconds);
现在和 10 分钟后使用 momentjs 的时差
let start_time = moment().format('YYYY-MM-DD HH:mm:ss');
let next_time = moment().add(10, 'm').format('YYYY-MM-DD HH:mm:ss');
let diff_milliseconds = Date.parse(next_time) - Date.parse(star_time);
let diff_seconds = diff_milliseconds * 1000;
使用 new Date() 定义两个日期。 使用 date2 计算两个日期的时差。 getTime() – 日期 1。 获取时间(); 计算编号两个日期之间的天数,将两个日期的时差除以 no。 一天中的毫秒数 (1000 60 60*24)
let startTime = new Date(timeStamp1);
let endTime = new Date(timeStamp2);
以秒为单位获取日期之间的差异->
let timeDiffInSeconds = Math.floor((endTime - startTime) / 1000);
但这会产生 utc 的结果(出于某种我不知道的原因)。 所以你必须考虑时区偏移,你可以通过添加来做到这一点
新的 Date().getTimezoneOffset();
但这会以分钟为单位提供时区偏移量,因此您必须将其乘以 60 才能获得以秒为单位的差异。
let timeDiffInSecondsWithTZOffset = timeDiffInSeconds + (new Date().getTimezoneOffset() * 60);
这将产生根据任何时区正确的结果,并且不会根据您相对于 UTC 的时区添加/减去小时数。
const getTimeBetweenDates = (startDate, endDate) => {
const seconds = Math.floor((endDate - startDate) / 1000);
const minutes = Math.floor(seconds / 60);
const hours = Math.floor(minutes / 60);
const days = Math.floor(hours / 24);
return { seconds, minutes, hours, days };
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.