Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS:带日期的输入字段_Javascript_Angularjs - Fatal编程技术网

Javascript AngularJS:带日期的输入字段

Javascript AngularJS:带日期的输入字段,javascript,angularjs,Javascript,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

我想,这是一个初学者的问题,但我不知道该搜索什么

我有一张时间表,应该是这样的:

    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>

发件人:
致:
暂停:
工作时间:{t.to-t.from-t.pause | hhmm}
那么,我如何将日期值输入“08:30”等文本字段并计算总工作时间呢

我考虑在模型中使用分钟值(08:00=480)进行计算,因为我将这些数据作为分钟值保存在数据库中,这使得计算变得简单(从暂停开始)。这有意义吗?顺便说一句,我有一个过滤器,可以将分钟值转换为HH:mm格式

谢谢, 伯恩哈德

PS:这里有一个函数可以将分钟(比如480分钟)转换为HH:MM字符串(08:00)

var convertToHourString=函数(分钟,始终显示分钟){
var小时=数学地板(最小值/60);
var分钟数=分钟数%60;
如果(分钟===0&!始终显示分钟)
返程时间;
返回时间+”:“+(分钟<10?+0”+分钟:分钟);
};

我会在你的控制器内作为计算属性进行计算。您需要使用传入的字符串创建一个新日期(),然后才能进行计算

下面是一个简单的例子:


正如Michael所说,momentJS将为您提供更丰富的与日期相关的功能。如果你除了简单的数学之外还有其他的东西,那么引入依赖关系可能是值得的。

我会在你的控制器中作为计算属性进行数学运算。您需要使用传入的字符串创建一个新日期(),然后才能进行计算

下面是一个简单的例子:


正如Michael所说,momentJS将为您提供更丰富的与日期相关的功能。如果你有非常简单的数学以外的东西,那么可能值得引入依赖关系。

提供了你需要的所有日期/时间操作和转换。

提供了你需要的所有日期/时间操作和转换。

好的,我自己找到了

这就是问题所在。 “那么,我如何计算总工作时间?”

{{calcWorkingHours(t.to,t.from,t.pause)|hhmm}
范围:从=08:00到=17:30,暂停=01:00


因此,变量to、from和pause将被转换为分钟值,工作时间将被计算(再次作为分钟值)并使用过滤器(“hhmm”)输出,该过滤器将510(分钟)等转换为“08:30”小时。

好的,我自己找到了答案

这就是问题所在。 “那么,我如何计算总工作时间?”

{{calcWorkingHours(t.to,t.from,t.pause)|hhmm}
范围:从=08:00到=17:30,暂停=01:00


因此,to、from和pause变量将被转换为分钟值,工作时间将被计算(再次作为分钟值)并使用过滤器(“hhmm”)输出,该过滤器将510(分钟)之类的时间转换为“08:30”小时。

这没有提供解决OPs问题的方法,圣母,我希望其中不包括一个完整的数据库来做简单的算术。谢谢你的评论。rgthree就在这里,这与转换时间无关,因为我已经有了时间操作(发布在PS中)。我只是在寻找一种角度的方法来做我的运算,即我更新“from”值,然后立即计算“working hours”。这并没有提供如何解决OPs问题的见解,而且,天哪,我希望其中不包括一个完整的数据库来做简单的算术。谢谢你的评论。rgthree就在这里,这与转换时间无关,因为我已经有了时间操作(发布在PS中)。我只是在寻找做操作的角度方法,即更新“from”值,然后立即计算“work hours”。
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);
};
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);
<span>{{calcWorkingHours(t.to, t.from, t.pause)|hhmm}}</span>