2013-05-12 59 views
0

我有一個流星集合,我存儲日期和時間(我的工作時間表)。時間被保存爲秒。Meteorjs&Handlebars:我怎樣才能把一個函數從數據庫中的值?

當我告訴他們在模板中所有我做的是一個

Days.find({}) 

,我可以用它在我的模板是這樣的:

<template name="calendar"> 
    {{#each days}} 
    <p> 
     {{> day}} 
    </p> 
    {{/each}} 
</template> 

<template name="day"> 
    <p> 
    {{date}} - {{time}} 
    </p> 
</template> 

現在,作爲「時間」以秒爲它會顯示30240(時間以秒爲單位),但我真正想要顯示的是8小時24分鐘。我如何添加一個函數到計算小時和分鐘的模板?

回答

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(); 

Store中的日期作爲日期對象

總而言之,這可能會更好您的日期存儲爲Date對象。然後你可以得到日期toLocaleDateString()或超時toLocaleTimeString() &它根據瀏覽器的位置調整到不同的時區(因爲在它的核心,它將在unixtime中以UTC存儲日期&次)。另外,你不必分開存儲時間。

+0

由於我存儲了我工作過的時間,因此無法使用日期對象(或者我可以嗎?)但模板。*。助手是我正在尋找的,謝謝! – renato 2013-05-12 11:57:44

相關問題