在模板中显示格式化的时间戳
我如何格式化模板内的时间戳? 我跟着一个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。
如果你想避免图书馆和使用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