【问题标题】:Using handlebars helpers to detect if two dates match使用车把助手检测两个日期是否匹配
【发布时间】:2019-08-24 22:50:22
【问题描述】:

所以有点上下文,我有一个网站作为事件。有些事件持续一天,有些则不止一个。为了显示我即将发生的事件,我使用 mongodb 对集合进行排序,并将结束日期与今天的日期进行比较。然而,目前我有两个日期显示如果日期匹配看起来很糟糕,下面的把手帮助程序旨在检测两个日期是否相同。但是,目前它似乎不起作用。

帮手

handlebars.registerHelper('ifEquals', function(arg1, arg2, options) {
    return (arg1 == arg2) ? options.fn(this) : options.inverse(this);
});

hbs 页面。

<h4>{{#ifEquals startDate endDate}}the same date{{else}}it's different{{/ifEquals}}</h4>

传递的数据应该有效但无效

arg1 2019-08-23T23:17:52.000Z
arg2 2019-08-23T23:17:52.000Z

不匹配的日期,这些被检测为不同,但我不认为这是一个积极的功能/数据是正确的

arg1 2019-08-24T23:00:00.000Z
arg2 2019-08-27T12:00:00.000Z

【问题讨论】:

    标签: node.js


    【解决方案1】:

    这是因为 javascript 按对象相等性比较日期,因此您必须检查日期一个时间戳是否等于以下代码:

    handlebars.registerHelper('ifEquals', function(arg1, arg2, options) {
        return (arg1.getTime() == arg2.getTime()) ? options.fn(this) : options.inverse(this);
    });
    

    更多示例:

    var a = new Date('2019-08-23T23:17:52.000Z')
    var b = new Date('2019-08-23T23:17:52.000Z')
    
    a == b // return false 
    a.getTime() == b.getTime() // return true 
    
    var a = new Date('2019-08-23T23:17:52.000Z')
    var b = a
    
    a == b // return true  
    a.getTime() == b.getTime() // return true 
    

    【讨论】:

      猜你喜欢
      • 2013-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-02
      • 1970-01-01
      • 2019-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多