在 Meteor Handlebars 括号 timestamp 中格式化日期

Posted

技术标签:

【中文标题】在 Meteor Handlebars 括号 timestamp 中格式化日期【英文标题】:Format date in Meteor Handlebars bracers timestamp 在 Meteor Handlebars 括号 timestamp 中格式化日期 【发布时间】:2013-07-26 07:12:11 【问题描述】:

在使用 Meteor's Handlebar 护腕时,如何将 timestamp 的输出从 Thu Jul 25 2013 19:33:19 GMT-0400 (Eastern Daylight Time) 转换为 Jul 25

试过 timestamp.toString('yyyy-MM-dd') ,但报错

【问题讨论】:

注意:标准toString() for Dates 忽略传递给它的任何参数,并且ECMAScript 没有定义任何其他可以基于String 格式化Date 的方法,例如'yyyy-MM-dd'。如果您还没有包含修改 toString() 的库,请查看 ***.com/q/1056728 以获取建议。 这里有一个更好的描述如何做到这一点 -> ***.com/questions/18580495/… 【参考方案1】:

使用车把助手:

Template.registerHelper("prettifyDate", function(timestamp) 
    return new Date(timestamp).toString('yyyy-MM-dd')
);

然后在你的html中:

prettifyDate timestamp

如果你使用时刻:

Template.registerHelper("prettifyDate", function(timestamp) 
    return moment(new Date(timestamp)).fromNow();
);

【讨论】:

正如上面提到的@JonathanLonowski,值得注意的是timestamp.toString() 将忽略传递给它的任何参数。我发现使用 MomentJS 让这一切变得异常简单。 @Akshat,注意经过一些翻转后,现在的语法是Template.registerHelper【参考方案2】:

这对我有用

Handlebars.registerHelper("prettifyDate", function(timestamp) 
     return (new Date(timestamp)).format("yyyy-MM-dd");
);

【讨论】:

【参考方案3】:

这对我有用。

toString("yyyy-MM-dd") - 不转换它。

Template.registerHelper("prettifyDate", function(timestamp) 
    var curr_date = timestamp.getDate();
    var curr_month = timestamp.getMonth();
    curr_month++;
    var curr_year = timestamp.getFullYear();
    result = curr_date + ". " + curr_month + ". " + curr_year;
    return result;
);

【讨论】:

【参考方案4】:

使用车把助手:

const exphbsConfig = exphbs.create(
    defaultLayout: 'main',
    extname: '.hbs',
    helpers:

        prettifyDate:  function(timestamp) 
            function addZero(i) 
                if (i < 10) 
                  i = "0" + i;
                
                return i;
            

            var curr_date = timestamp.getDate();
            var curr_month = timestamp.getMonth();
            curr_month++;
            var curr_year = timestamp.getFullYear();

            var curr_hour = timestamp.getHours();
            var curr_minutes = timestamp.getMinutes();
            var curr_seconds = timestamp.getSeconds();

            result = addZero(curr_date)+ "/" + addZero(curr_month) + "/" + addZero(curr_year)+ '   ' +addZero(curr_hour)+':'+addZero(curr_minutes)+':'+addZero(curr_seconds);
            return result;
        

        

);

app.engine('hbs', exphbsConfig.engine);
app.set('view engine', '.hbs');

然后在你的 html 中:

  <div class="card-footer">
      <small class="text-muted">Atualizada em: prettifyDate updatedAt    </small>
    </div>

【讨论】:

以上是关于在 Meteor Handlebars 括号 timestamp 中格式化日期的主要内容,如果未能解决你的问题,请参考以下文章

Meteor 模板事件处理程序中“this”的上下文(使用 Handlebars 进行模板)

在 Meteor 的 Handlebars 模板中格式化日期

Meteor & Handlebars:每 N 项后的新行

Meteor中的翡翠模板

如何在 Handlebars 模板中添加 console.log() JavaScript 逻辑?

您可以在 css 文档中使用 handlebars.js 变量吗?