使用javascript的时差

时间:2016-02-18 10:15:03

标签: javascript

使用javascript查找12小时格式的两个不同时间之间的时差的代码是什么。我在动态网格视图中使用这两个时间字段。

 var gridNew = document.getElementById("<%= Gridview1.ClientID %>");
            if (gridNew.rows.length > 0) {
                for (i = 0; i < gridNew.rows.length - 2; i++) {
                    var frombox = document.getElementById("Gridview1_txtFrom_" + (i));
                    var tobox = document.getElementById("Gridview1_txtTo_" + (i));
                      if(frombox.value<=tobox.value){
                        alert("Enter valid time set");
                        return false;

4 个答案:

答案 0 :(得分:3)

下面&#39;如何在两个自定义日期之间获得毫秒时间差。

Math.abs(new Date(firstDateString).getTime() - new Date(secondDateString).getTime());

如果您在解析/转换为Date时遇到问题,请考虑使用date.js或moment.js

等库

有一刻你可以这样做:

var diff = moment('3:30','HH:mm').diff(moment('3:20','HH:mm'));

如果你需要am / pm:

var diff = moment('3:30 pm','HH:mm a').diff(moment('3:20 am','HH:mm a'));

此处jsfiddle

答案 1 :(得分:0)

JS中的时代对于处理跨浏览器来说可能是一种痛苦,任何不得不调试错误的跨浏览器行为的人都可以证明这一点。我学到了比以往任何时候我都想做任何关于JS的约会涉及moment.js lib。

起初我不情愿,因为我认为我可以自己做大部分事情并自己动手。这是一支古巴雪茄,没有多少家用滚动可以涵盖所有工具的时刻。

我不会告诉你如何修复,只需给你工具......

moment().diff

享受!

答案 2 :(得分:0)

您还没有显示时间的格式,只是说它们是&#34; 12小时格式&#34;。一种算法是解析并将它们转换为一个公共单位,比如秒,找到差异,然后将其格式化回任何适合的单位。

因此,如果时间是h:m:s a / p格式,如&#34; 9:42:15 am&#34;并且您希望结果采用类似的格式,那么以下功能可能有所帮助。

&#13;
&#13;
/*  Convert time in h:m:s a/p format to seconds
**  Seconds component is optional, h:m is OK
**  Tolerates space before am/pm, leading and trailing whitespace
**  Doesn't validate string
**
**  @param {string} s - time to parse
**  @returns {number} time converted to seconds.
*/
function hmsToSeconds(s) {
  var b = s.match(/\d+/g);
  var am = /am\s*$/i.test(s);
  return ((b[0] % 12) + (am? 0:12))*3600 + (b[1]*60) + (+b[2]||0);
}

/*  Convert seconds to time in h:mm:ss format
**  Maintains sign of input (+/-).
**
**  @param {number} s - seconds to convert
**  @returns {string} seconds converted to h:mm:ss.
*/
function secToHMS(s) {
  function z(n){return (n<10? '0' : '') + n}
  var sign = s < 0? '-' : '';
  s = Math.abs(s);
  return sign + (s/3600 | 0) + ':' + z((s%3600 / 60 |0)) + ':' + z(s%60);
}

function getTimeDifference(t0, t1) {
  return secToHMS(hmsToSeconds(t1) - hmsToSeconds(t0)); 
}

document.write(getTimeDifference('11:32 am','12:38:51pm'));
&#13;
&#13;
&#13;

答案 3 :(得分:0)

尝试使用这个简单的插件来获取时差。

https://github.com/gayanSandamal/good-time

从good-time.js导入goodTimeDiff方法到您的项目

import {goodTimeDiff} from './scripts/good-time.js'

声明一个对象以进行如下设置。让设置= {}

现在将时间值分配给已声明的对象变量。 *时间必须为标准格式,并且必须为字符串! * 'from'是可选的,默认值为浏览器当前时间。

let settings = {
    'from': '2019-01-13T00:00:29.251Z',
    'to': '2018-09-22T17:15:29.251Z'
}

现在回叫名为goodTimeDiff()的方法,并将设置对象变量作为参数传递。

goodTimeDiff(settings)

最后将方法分配给所需的任何变量。

let lastCommentedTime = goodTimeDiff(timeSettings)