如何格式化模板中的时间戳?我按照建立聊天的教程进行操作。现在我扩展了聊天功能,例如删除消息并将时间放在消息前面。但是当我在模板中写{{timestamp}}
时,会给出一个UNIX时间戳。我如何格式化它以显示时间,如'6:12'。时间戳存储在Messages集合中。
是否适合操纵
内的时间戳 Template.Messages.created = function ( ) { ... }
功能
提前致谢。
答案 0 :(得分:4)
虽然在这种情况下不是必需的,但我建议使用Moment.js,这样可以轻松地在Javascript中处理日期和时间。
您可以从Atmosphere安装软件包或将script下载到client
目录中,然后使用类似下面的帮助程序: -
Template.Messages.helpers({
created: function() {
var time = moment(this.timestamp);
return time.format('h:mm a');
}
});
NB:我假设timestamp
是上下文对象的var。
答案 1 :(得分:1)
我使用这个库。它为您提供了所需的所有日期格式。使用meteor只需将其放入,您就可以在任何助手中使用它来返回格式化的日期。
答案 2 :(得分:1)
如果你想避免库和使用Javascript Date对象操作我会建议(这假设日期是ISO格式2010-06-15T00:00:00,你可以从Date.toISOString()得到):< / p>
实现格式化方法(感谢JavaScript equivalent to printf/string.format),把它放在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
;
});
};
创建帮助程序(将其放入client / 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>
答案 3 :(得分:1)
看看这个包swag,它提供了许多有用的把手助手。
查看其日期/时间助手:https://github.com/elving/swag#dates
您可以像以下一样格式化日期/时间:
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
答案 4 :(得分:0)