我有一个Meteor Collection,我存储日期和时间(我的工作时间表)。时间保存为秒。
当我在模板中显示它们时,我所做的只是
Days.find({})
我可以在我的模板中使用它:
<template name="calendar">
{{#each days}}
<p>
{{> day}}
</p>
{{/each}}
</template>
<template name="day">
<p>
{{date}} - {{time}}
</p>
</template>
现在'时间'是几秒钟,它会显示像30240(以秒为单位的时间),但我真正想要显示的是8小时24米。如何向该模板添加一个计算小时和分钟的函数?
答案 0 :(得分:1)
将您的时间转换为字符串
您可以在日常模板中添加帮助,将其转换为您想要的表单:
Template.day.helpers({
niceTime:function() {
var timeInMs = this.time; //'this' is the current data context
var datetime = new Date(timeInMs); //convert this to a date object
return datetime.toLocaleTimeString; //return the time in a locale string
}
});
然后在您的模板中使用{{niceTime}}
代替{{time}}
这也取决于你存储时间的方式。如果它在javascript unix时间内存储自1970年以来的毫秒或从一天开始的毫秒数。如果是几秒钟,您需要先将它乘以1000。如果您在将其存储在流星中时使用.getTime()
来获取它,则可以按原样使用上述内容。
如果您从一天开始的几秒钟内存储,请将从1970年(unix时间开始)的毫秒数添加到您的时间。
var today = new Date();
var timeInMs = (this.time*1000) + new Date(today.getFullYear(),today.getMonth(),today.getDate()).toTime();
将您的日期存储为日期对象
总而言之,将日期存储为Date
对象可能更好。然后,您可以根据需要获得toLocaleDateString()
或超时toLocaleTimeString()
的约会时间。根据浏览器的位置调整到不同的时区(因为它的核心将以unixtime存储日期和时间,以UTC为单位)。此外,您不必单独存储时间。