【问题标题】:Calculate the day difference between two time计算两个时间之间的天差
【发布时间】:2018-10-04 20:22:24
【问题描述】:

我有两种日期格式,我需要计算两者之间的小时差。

第一个日期是当前日期。 第二个日期的格式如下:

var depDate = 25092018  //ddmmyyyy
var depTime = 08:35 //hh:mm

新的日期函数不采用ddmmyyyy 格式的日期。如何在新的 Date 函数中输入 depDate

我想检查当前日期和depDate 之间的差异。

有人可以帮忙吗?

【问题讨论】:

  • 但新日期不采用 ddmmyyyy 格式的日期。如何在新的 Date 函数中输入 depDate
  • JavaScript 有一个内置的Date 类型。如果你不需要日期时间,你应该使用standard format like yyyy-mm-dd。请不要使用这种奇怪的整数(08:35 甚至不是有效的语法)而不是正确的日期。
  • 如果你要使用整数(它们是浮点数,真的..)来描述天数(我不知道你为什么要在 JavaScript 中这样做),至少使用 YYYYMMDD 格式.至少你的整数会随着时间的推移单调增加。如果您需要一些高级日期操作,请查看 moment.js。

标签: javascript datetime date-formatting


【解决方案1】:

变量depDate 中的日期格式无效。您需要使用.replace() 中的正则表达式来验证它的格式。然后使用Date.prototype.getTime() 获取日期的数值。

var depDate = "25092018";  
var depTime = "08:35";
var dateStr = depDate.replace(/(\d{2})(\d{2})(\d{4})/, "$3-$2-$1")+"T"+depTime;
// dateStr => 2018-09-25T08:35

var timeDiff = Math.abs(new Date(dateStr).getTime() - new Date().getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
// 1000 => to converting millisecond to second
// 3600 => to converting second to hour
// 24 =>   to converting hour to day                    
console.log(diffDays);

【讨论】:

  • 非常感谢@Mohammed
  • 这在 Safari 中失败,因为 '2018-09-25 08:35' 不是有效的日期时间格式。见What are valid Date Time Strings in JavaScript?
  • @str 问题已修复
  • @Mohammad ,depDate 以 var depDate = 25092018 格式而不是 var depDate = "25092018" 格式存储数据。因此,replace 将错误抛出为“replace 不是函数”。如何将 var depDate = 25092018 转换为字符串,以便替换对其起作用。
【解决方案2】:

如果您使用的是moment 模块,那就简单多了。代码如下:

let moment = require('moment');
let depDate = "27092018"  //ddmmyyyy
let depTime = "08:35" //hh:mm

let date = moment(depDate, "DDMMYYYY").add(moment(depTime,"HH:mm"))
let difference = moment.duration(moment().diff(date)).asHours();
console.log(difference); // This would be the difference in hours.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-24
    • 2020-05-13
    相关资源
    最近更新 更多