【问题标题】:Comparing 2 Times with DateJS用 DateJS 比较 2 次
【发布时间】:2013-04-17 06:04:38
【问题描述】:

我在这里看到了一些关于找出使用两个不同日期之间差异的不同问题。

我的问题类似于Parse ONLY a time string with DateJS

我基本上有 2 个时间输入:

<input id="start_time" type="text"> <input id="end_time" type="text">

这些格式始终为:07:15 AM08:30 AM

基本上,我要做的是确保start_time 不大于end_time

我曾尝试使用 DateJS 解析日期,但它返回 null:

Date.parseExact("03:15 PM", "HH:mm");    <--- returns null

我应该如何比较两个输入字段(使用 DateJS 或其他)以确保 start_time 不大于 end_time?

任何帮助都会很棒。

【问题讨论】:

  • 您传递给parseExact 的日期字符串与您传递的格式不匹配。

标签: javascript date datejs


【解决方案1】:

您需要将 AM/PM 字段添加到您用于解析的格式中。尝试使用

HH:mm tt

代替

HH:mm

【讨论】:

  • 谢谢,这就是我想要实现的目标。
【解决方案2】:

没有完全回答这个问题,但 DateJS 看起来有点过时了。我建议你看看Moment.js,在那里你可以这样做:

moment("03:15 PM", "hh:mm A").isAfter(moment("03:05 PM", "hh:mm A"));
// false

【讨论】:

  • 感谢您的建议。这看起来很有趣,我得去看看。
【解决方案3】:

为什么不使用 toString?

var g = new Date("2012-01-11 03:15 PM");
console.log(g.toString('HH:mm'));

只需添加一个虚构的日期以获得有效的日期字符串格式。 因为我猜你只需要时间而不是日期

对我来说很好用。

【讨论】:

    【解决方案4】:

    您可以将Date.parseExact 与@matthewtole 提供的格式修订一起使用,或者您也应该能够只使用“Date.parse”。

    Date.parseExact 会提供更好的性能,但如果你只是解析两个值,Date.parseExact 的性能提升可能不会有太大的不同。

    您还可以使用.isBefore() 函数来检查一个日期是否在另一个日期之前。

    示例

    var d1 = Date.parse("07:15 AM");
    var d2 = Date.parse("08:30 AM");
    
    d1.isBefore(d2); // true
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-23
      • 1970-01-01
      • 2013-05-06
      • 1970-01-01
      • 2022-11-07
      • 1970-01-01
      • 2022-09-26
      • 2021-08-15
      相关资源
      最近更新 更多