【问题标题】:Get days difference in two dates format (YYYY/MM/DD hh:mm)?以两种日期格式 (YYYY/MM/DD hh:mm) 获取天差?
【发布时间】:2019-03-11 00:12:09
【问题描述】:

我试图找出两个日期之间的差异,如下所示:

2018/10/05 13:59

但我的问题在于我的代码,它总是返回 NaN。

这是我当前的代码:

var start = '2018/10/05 13:59';
var end = '2018/10/05 17:59';

var converted_start = start.replace("/", "-");
var converted_end = end.replace("/", "-");

// end - start returns difference in milliseconds 
var diff = new Date(converted_end - converted_start);

// get days
var days = diff/1000/60/60/24;

alert(days);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

我尝试将代码中的/ 替换为-,但这并没有解决问题!

有人可以就这个问题提出建议吗?

提前致谢。

【问题讨论】:

  • 我想你的第一个问题是你正在使用字符串并试图减去它们并从该结果中创建一个新的日期。然后,您将采用这个 diff,它意味着一个 Date(不确定它在运行时会是什么),然后对其进行除法。我想 Date 对象具有进行数据操作的方法,您可能应该查找这些方法
  • @Dave 使用字符串应该不会导致任何问题。看这里:stackoverflow.com/questions/2609513/…
  • @JamesJuanjie 似乎 .val() 返回 Date 对象,而不是字符串,该链接答案中的第二个 sn-p 包含示例
  • @JamesJuanjie FYI replace("/", "-") 仅替换第一次出现的 /
  • @barbsan,谢谢...

标签: javascript


【解决方案1】:

您可以使用以下方法获取两种日期格式 (YYYY/MM/DD hh:mm) 的天数差异:

var start = new Date('2018/10/05 13:59');
var end = new Date('2018/10/05 17:59');

// get hours
var hours= (end-start)/3600000;

alert(hours);

【讨论】:

  • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
  • @Dharman 实际上它会提醒小时数,这解决了 OP 的问题,但在天数计算中错过了 /24
  • @James Juanjie 有什么不对?此代码以小时为单位显示差异。你需要什么结果?
【解决方案2】:
var start = '2018/10/05 13:59';
var end = '2018/10/05 17:59';

var startDate = Date.parse(start);
var endDate = Date.parse(end);


var diff = new Date(endDate - startDate);

var days = diff/1000/60/60/24;

这对我有用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多