计算2次的差值
Calculate the difference from 2 times
今天我开始做一些与时俱进的事情。
我有2次。从现在开始的时间在字符串 10:10:15 中,日期在 27/02/2015 10:05:10.
所以对于这个例子,我需要 00:05:05,但我不知道我必须如何解决这个问题,我已经搜索了几个小时。
以下是如何可靠地跨浏览器将时间字符串解析为 Date
实例(即使它不在规范中):
var dt = new Date("01/01/2015 " + timeString);
或者,如果您想按照规范进行操作(但这不适用于旧版浏览器,因为规范仅在 ES5 中添加了此内容):
var dt = new Date("2015-01-01T" + timeString + "Z");
dt = new Date(dt.getTime() + (dt.getTimezoneOffset() * 60 * 1000));
在这两种情况下,输入字符串的时间都假定为 local 时间(这就是我们进行时区调整的原因)。 (我们需要字符串上的 "Z"
,因为 ES5 规范中有一个大错误,并说离开时区意味着 GMT,而在 ISO-8601 [格式所基于的] 中离开timezone 意味着本地时间。ES6 规范修复了这个问题,但这意味着现在,一些引擎做一件事,其他引擎做另一件事。)
以下是从 Date
实例获取自午夜以来的分钟数的方法:
var minutes = dt.getHours() * 60 + dt.getMinutes();
从那里开始,它是减法(从另一个日期中减去一个日期从午夜开始的分钟数),除法(/
运算符,以获得小时数)和余数(%
运算符,获得一小时内的分钟数)。 :-)
或者,您可以使用像 MomentJS 这样的库来为您完成这项工作。但是上面的工作并不多。
今天我开始做一些与时俱进的事情。
我有2次。从现在开始的时间在字符串 10:10:15 中,日期在 27/02/2015 10:05:10.
所以对于这个例子,我需要 00:05:05,但我不知道我必须如何解决这个问题,我已经搜索了几个小时。
以下是如何可靠地跨浏览器将时间字符串解析为 Date
实例(即使它不在规范中):
var dt = new Date("01/01/2015 " + timeString);
或者,如果您想按照规范进行操作(但这不适用于旧版浏览器,因为规范仅在 ES5 中添加了此内容):
var dt = new Date("2015-01-01T" + timeString + "Z");
dt = new Date(dt.getTime() + (dt.getTimezoneOffset() * 60 * 1000));
在这两种情况下,输入字符串的时间都假定为 local 时间(这就是我们进行时区调整的原因)。 (我们需要字符串上的 "Z"
,因为 ES5 规范中有一个大错误,并说离开时区意味着 GMT,而在 ISO-8601 [格式所基于的] 中离开timezone 意味着本地时间。ES6 规范修复了这个问题,但这意味着现在,一些引擎做一件事,其他引擎做另一件事。)
以下是从 Date
实例获取自午夜以来的分钟数的方法:
var minutes = dt.getHours() * 60 + dt.getMinutes();
从那里开始,它是减法(从另一个日期中减去一个日期从午夜开始的分钟数),除法(/
运算符,以获得小时数)和余数(%
运算符,获得一小时内的分钟数)。 :-)
或者,您可以使用像 MomentJS 这样的库来为您完成这项工作。但是上面的工作并不多。