我正在努力计算日期之间的时间 我的代码
$scope.startTime = new Date('0').setHours(7);
$scope.endTime = new Date('0').setHours(17);
$scope.breakTime = new Date('0').setMinutes(30);
this.tosum = function(startTime, endTime, breakTime) {
var timestamp1 = new Date(startTime).getTime();
var timestamp2 = new Date(endTime).getTime();
var timestamp3 = new Date(breakTime).getTime();
var diff = timestamp2 - timestamp1 - timestamp3;
var newDate = new Date('0');
newDate.setMilliseconds(diff);
return newDate;
};
它适用于timestamp1和2但是当我添加时,时间戳3我得到错误的结果..:/
我想在startTime和endTime之间获得时间 - breakTime
var diff = timestamp2 - timestamp1
应该提供10:00,但是在添加-timestamp1
时,它应该提供10:30而不是9:30:/
如果我添加+ timestamp3;
而不是 - 我应该得到9:30,但是如果加上一小时休息时间,那么休息时间是1小时30分钟,我得到10:30和休息时间2小时30分钟结果11:30所以一个:/但应该是8:30和7:30我怎么纠正这个?
答案 0 :(得分:1)
我相信这是因为你没有考虑你的Epoch(2000年:你使用解析器解析的字符串0
)的引用。在纯JS中(你可以将它翻译成角度)。
function tosum(startTime, endTime, breakTime) {
var reference = new Date('0'),
timestamp1 = new Date(startTime).getTime() - reference.getTime(),
timestamp2 = new Date(endTime).getTime() - reference.getTime(),
timestamp3 = new Date(breakTime).getTime() - reference.getTime(),
diff = timestamp2 - timestamp1 - timestamp3,
newDate = new Date('0');
newDate.setTime(diff);
return newDate;
}
var startTime = new Date('0').setHours(7),
endTime = new Date('0').setHours(17),
breakTime = new Date('0').setMinutes(30);
document.body.textContent = tosum(startTime, endTime, breakTime).toISOString().split(/[T\.]/g)[1];

如果您使用过unix时代(使用自纪元以来的毫秒数0)那么您就没有问题了。
function tosum(startTime, endTime, breakTime) {
var timestamp1 = new Date(startTime).getTime(),
timestamp2 = new Date(endTime).getTime(),
timestamp3 = new Date(breakTime).getTime(),
diff = timestamp2 - timestamp1 - timestamp3,
newDate = new Date(0);
newDate.setTime(diff);
return newDate;
}
var startTime = new Date(0).setHours(7),
endTime = new Date(0).setHours(17),
breakTime = new Date(0).setMinutes(30);
document.body.textContent = tosum(startTime, endTime, breakTime).toISOString().split(/[T\.]/g)[1];

使用console
并记录您的一些值会向您展示。
答案 1 :(得分:-1)
请你试试下面的内容:
var diff = timestamp2 - (timestamp1 + timestamp3);