Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以秒为单位获取两个日期之间的时间差_Javascript_Date - Fatal编程技术网

Javascript 以秒为单位获取两个日期之间的时间差

Javascript 以秒为单位获取两个日期之间的时间差,javascript,date,Javascript,Date,我想在几秒钟内找出两次约会的区别。逻辑是这样的: 设定一个初始日期,即现在 设置一个最终日期,即初始日期加上未来的秒数(例如15秒) 获取这两者之间的差值(秒数) 我之所以使用日期,是因为最终的日期/时间取决于一些其他变量,而且从来都不一样(取决于用户做某事的速度),而且我还为其他事情存储初始日期 我一直在尝试这样的事情: var _initial = new Date(), _initial = _initial.setDate(_initial.getDate()), _

我想在几秒钟内找出两次约会的区别。逻辑是这样的:

  • 设定一个初始日期,即现在
  • 设置一个最终日期,即初始日期加上未来的秒数(例如15秒)
  • 获取这两者之间的差值(秒数)
我之所以使用日期,是因为最终的日期/时间取决于一些其他变量,而且从来都不一样(取决于用户做某事的速度),而且我还为其他事情存储初始日期

我一直在尝试这样的事情:

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
,这会给我留下秒数,但我一直没弄好。那么我的逻辑有什么问题?我可能犯了一些愚蠢的错误,因为时间已经很晚了,但让我烦恼的是我无法让它工作:)

代码 或者更简单的
(endDate-startDate)/1000
,除非您使用的是typescript


解释 您需要为
Date
对象调用
getTime()
方法,然后简单地减去它们并除以1000(因为它最初是以毫秒为单位的)。另外,当您调用
getDate()
方法时,实际上您得到的是一个介于1和31之间的整数(不是基于零的),而不是调用
getTime()
方法得到的历元时间,表示自1970年1月1日00:00以来的毫秒数


咆哮 根据与日期相关的操作是什么,您可能希望投资集成一个库,例如或,它使开发人员的工作变得更加容易,但这只是个人偏好的问题

例如,我们会做
moment1.diff(moment2,“seconds”)
,这很漂亮


这个答案的有用文档

var_initial='2015-05-21T10:17:28.593Z';
var fromTime=新日期(首字母);
var toTime=新日期();
var differenceTravel=toTime.getTime()-fromTime.getTime();
var秒=数学地板((差程)/(1000));
文件。写入(“+秒+”);
您可以使用
新建日期().getTime()
获取时间戳。然后,您可以计算结束和开始之间的差异,并最终将时间戳
ms
转换为
s

const start = new Date().getTime();
const end = new Date().getTime();

const diff = end - start;
const seconds = Math.floor(diff / 1000 % 60);

尝试使用高级编程语言中的专用函数。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;

下面的代码将以秒为单位给出时差

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 );

使用new Date()定义两个日期。 使用date2计算两个日期的时差。getTime()–date1。getTime();
计算两个日期之间的天数,将两个日期的时差除以一天中的毫秒数(10006060*24)

准确快速将以秒为单位给出输出:

 let startDate = new Date()
 let endDate = new Date("yyyy-MM-dd'T'HH:mm:ssZ");
 let seconds = Math.round((endDate.getTime() - startDate.getTime()) / 1000);

操作顺序是关键。所以你想有一个时间戳,加上15秒,然后看看以秒为单位的区别是什么。我要说的是,差别很可能是。。。。等等。。。。15秒?另请参见:我确实理解您要做的事情(我想),但是如果您使用new Date(),也就是现在的unix时间,再加上15秒,然后立即检查差值,差值将是15秒(减去计算所用的毫秒),但我猜你的目的是想在将来以某种方式比较一下。我真的不明白,为了证明我的观点,这里有一个对你上面的例子有效的例子。如果你想知道用户做某件事花了多长时间,你通常会得到用户开始操作时的时间戳,以及用户完成操作时的时间戳,然后进行比较,你就知道花了多长时间。这15秒到底是干什么用的?不需要getTIme,日期可以相互减去,因为-运算符会强制日期为数字。getTIme是必需的,如果您使用typescript,则它不允许任何、数字或枚举之外的元素之间进行算术运算。您可以使用
.valueOf()
,这是
-
操作员在任何情况下都会调用的…如果我们还需要小时/分钟的时差,如何。。。?我应该把它分成60还是60的倍数@JuanPlease将新的疑问添加为单独的问题,但由于这一个可能会作为重复问题关闭,请看这里我们为什么要做%60?
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 );
 let startDate = new Date()
 let endDate = new Date("yyyy-MM-dd'T'HH:mm:ssZ");
 let seconds = Math.round((endDate.getTime() - startDate.getTime()) / 1000);