我想,这是一些初学者的问题,但我不知道要搜索什么。
我的时间表应如下所示:
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>
那么如何在像&#39; 08:30&#39;等文本字段中输入日期值?并计算总工时?
我正在考虑在模型中使用分钟值(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 :(得分:3)
momentJs提供您需要的所有日期/时间操作和转换。
答案 1 :(得分: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将为你提供更丰富的功能,与日期有关。如果你有非常简单的数学,那么可能值得引入依赖。
答案 2 :(得分:0)
好的,我自己发现了它。
这就是问题所在。 “那么如何计算总工作时间?”
<span>{{calcWorkingHours(t.to, t.from, t.pause)|hhmm}}</span>
范围:从= 08:00到= 17:30,暂停= 01:00
因此变量to,from和pause将被转换为分钟值,工作时间将被计算(再次作为分钟值)并使用过滤器('hhmm')输出,这将转换为sth。比如510(分钟)进入'08:30'小时。