2015-05-20 103 views
0

我想,這是一些初學者的問題,但我不知道,搜索什麼。AngularJS:輸入字段與日期

我有一個時間表,應是這樣的:

From | To | Pause | Hours 
    [08:00] [17:30] [01:00] 08:30 

的值在括號(08:00,17:30,01:00)是輸入字段,該時間應的計算值。

所以這是我的表格:

<div ng-repeat="t in timesheetCurrentMonth"> 
    From: <input type="text" ng-model="t.from"/> <!-- e.g. 08:00 --> 
    To: <input type="text" ng-model="t.to"/> <!-- e.g. 17:30 --> 
    Pause:<input type="text" ng-model="t.pause"/><!-- e.g. 01:00 --> 

    Working hours:<span>{{t.to-t.from-t.pause|hhmm}}</span> <!-- e.g. 08:30 --> 
</div> 

所以,我怎麼能輸入日期值到像'08文本框:30' ,並計算總的工作時間?

我在考慮使用模型中的分值(08:00 = 480)進行計算,因爲我會將這些數據作爲分鐘值存儲在數據庫中,並且它使得計算變得簡單(從暫停)。那有意義嗎?順便說一句,我有一個過濾器,將分鐘值轉換爲HH:mm格式。

感謝, 伯恩哈德

PS:這裏有一個轉換分鐘(如480)的功能到HH:MM字符串(08:00)。

var convertToHourString = function(min, alwaysShowMinutes) { 
    var hours = Math.floor(min/60); 
    var minutes = min % 60; 
    if (minutes === 0 && !alwaysShowMinutes) 
     return hours; 
    return hours + ":" + (minutes < 10 ? "0" + minutes : minutes); 
}; 

回答

0

好的,我自己找到了。

這是個問題。 「那我該如何計算總工作時間?」

<span>{{calcWorkingHours(t.to, t.from, t.pause)|hhmm}}</span> 

範圍:從= 08:00,對= 17:30,暫停= 01:00

所以變量,從和暫停將被轉換成分鐘值,工作時間將是計算(再次作爲分鐘值)並使用過濾器('hhmm')輸出,該過濾器轉換某物。像510(分鐘)到'08:30'小時。

1

我會做你的控制器內部的數學作爲計算屬性。您需要用傳入的字符串創建一個新的Date(),然後才能進行數學運算。

這裏有一個簡單的例子:https://jsfiddle.net/khpfvo1u/

var start = new Date('2015-05-20 08:30:00'); 
var end = new Date('2015-05-20 15:30:00'); 

var result = (end - start)/1000/60/60; 
alert(result); 

像邁克爾說,momentJS會給你更加豐富的功能,對於任何與日期。如果你有任何超出非常簡單的數學的東西,可能值得引入依賴。

3

momentJs提供您需要的所有日期/時間操作和轉換。

+0

這沒有提供如何解決OPs問題的見解,而且,聖潔的母親,我希望沒有包含整個日期庫來做簡單的算術。 – rgthree

+0

感謝您的評論。 rgthree就在這裏,這不是關於轉換時間,因爲我已經有了時間操作(發佈在PS中)。我只是在尋找Angular的方式來完成我的操作,即我更新'from'值,並且'工作時間'是馬上計算出來的。 – Bernie