在模板中显示格式化的时间戳

我如何格式化模板内的时间戳? 我跟着一个build立聊天的教程,它的工作原理。 现在我扩展了聊天function,例如删除邮件,把时间放在邮件前。 但是,当我在模板内写入{{timestamp}} ,UNIX时间戳被给出。 我如何格式化它以显示像'6:12'的时间。 时间戳被存储在一个消息集合中。

是正确的地方来操纵里面的时间戳

Template.Messages.created = function ( ) { ... }

function?

提前致谢。

看看模板助手和JavaScriptdate对象 。

虽然在这种情况下不是必需的,但我会build议使用Moment.js ,它使JavaScript中的date和时间变得轻而易举。

您可以从Atmosphere安装软件包或将脚本下载到您的client目录,然后使用类似于下面的助手:

 Template.Messages.helpers({ created: function() { var time = moment(this.timestamp); return time.format('h:mm a'); } }); 

注意:我假定timestamp是在上下文对象上的一个var。

我使用这个库。 它给你所有的date格式,你将永远需要。 随着meteor只是把它放进去,你可以用任何帮手来返回格式化的date。

http://stevenlevithan.com/assets/misc/date.format.js

如果你想避免图书馆和使用JavaScriptdate对象,我会build议(这假设date是ISO格式2010-06-15T00:00:00,你可以从Date.toISOString())得到:

实现格式化方法(谢谢JavaScript等价于printf / string.format ),把它放在ie lib / utils.js中:

 String.prototype.format = function(args, index) { return this.replace(/{(\w+)}/g, function(match, number) { return typeof args[index[number]] != 'undefined' ? args[index[number]] : match ; }); }; 

创build助手(把它放到客户端/ client.js)

 Handlebars.registerHelper('formatDate',function(input, pattern){ var iso = /^(\d{4})(?:-?W(\d+)(?:-?(\d+)D?)?|(?:-(\d+))?-(\d+))(?:[T ](\d+):(\d+)(?::(\d+)(?:\.(\d+))?)?)?(?:Z(-?\d*))?$/; if(this[input]) { var parts = this[input].match(iso); return pattern.format(parts, {yyyy:1,MM:4,dd:5,hh:6,mm:7,ss:8,SSS:9}); } return this[input]; }); 

使用帮手:

 {{#each logs}} <tr> <td>{{formatDate 'ts' '{yyyy}-{MM}-{dd} {hh}:{mm}:{ss}'}}</td> 

看看这个包赃物 ,它提供了很多有用的手柄帮手。

结帐date/时间助手: https : //github.com/elving/swag#dates

您可以像下面这样轻松地格式化date/时间:

 var date = new Date() {{formatDate date "%m/%d/%Y"}} {{formatDate date "%I:%M%p"}} {{formatDate date "%F"}} {{formatDate date "%Y%m%dT%H%M%S%z"}} 07/26/2015 11:38PM 2015-08-28 20150828T233805-0004