我有一个包含时间的对象。例如x.time = 10:20:00
。
我想把当前时间减去我的物品时间。
这是我的代码到目前为止,但我收到错误消息="无效日期":
for(var i = 0; i<x.length; i++){
nowDate = new Date();
minutesLeft = new Date(nowDate.getFullYear(), nowDate.getMonth(), nowDate.getDate() + x[i].time);
text +- "It is "+ minutesLeft[i] + " milliseconds left";
}
答案 0 :(得分:0)
为了将您的时间属性转换为日期对象,您可以执行以下操作:
function init(){
document.addEventListener('click', function(e) {
var link = e.target.closest('a');
if(!link)return;
e.preventDefault();
var text = link.textContent;
alert(text);
return spanText;
});
}
init();
然后,您可以使用var timepieces = x.time.split(':');
var date = new Date();
date.setHours(timepieces[0]);
date.setMinutes(timepieces[1]);
date.setSeconds(timepieces[2]);
对象的getTime()
方法直接比较两个日期。
Date
您还可以获得两个日期的差异,以毫秒为单位:
nowDate.getTime() === date.getTime()
nowDate.getTime() > date.getTime()
nowDate.getTime() < date.getTime()
答案 1 :(得分:0)
您的代码存在许多问题。我会经历并希望能抓住一切。
使用var
在循环中声明变量。 (further reading)
当您创建变量minutesLeft
时,您正在进行一些奇怪的连接。你告诉我们x.time
是一个字符串,如“10:20:00”,但你是(字符串)与Date.prototype.getDate
连接,返回一个1-31范围内的数字(表示当天的这个月)。你基本上是这样做的:
minutesLeft = new Date(2017,0,1910:20:00);
我希望你看到它不会创建一个新的日期。您可能想要一些符合
的内容minutesLeft = new Date(2017,0,19, 10, 20, 0);
哪个应该可以提供您想要的内容(今天的日期设置为x.time
定义的适当时间。
text +-
没有任何意义。我怀疑是一个拼写错误,你的意思是text +=
,它会将右边的值附加到变量text
。或者,也许text =
将分配值,替换那里的
"It is "+ minutesLeft[i] + " milliseconds left"
的 minutesLeft[i]
将从字符串中获取单个字符(如果值是数组,则从数组中获取项目)。你的只是一个约会对象,而不是一个数组,所以我怀疑你只是想完全放弃[i]
部分。
如果您想要了解当前日期/时间与所选日期/时间之间的差异,则需要使用nowDate
和minutesLeft
进行一些算术运算。我认为这是你所追求的差异。
var x = [{time:"10:20:20"}];
var text = "";
for(var i = 0; i<x.length; i++){
var nowDate = new Date();
var timeSplit = x[i].time.split(":");
var minutesLeft = new Date(nowDate.getFullYear(), nowDate.getMonth(), nowDate.getDate());
minutesLeft.setHours(timeSplit[0]);
minutesLeft.setMinutes(timeSplit[1]);
minutesLeft.setSeconds(timeSplit[2]);
text += "It is "+ (nowDate-minutesLeft) + " milliseconds left";
}
console.log(text);
答案 2 :(得分:0)
例如x.time = 10:20:00。我想把当前时间减去我的物品时间。
您的代码似乎很混乱,您似乎正在尝试执行以下操作:
var time = '10:20:00';
var timeParts = time.split(':');
var now = new Date();
// Current date and time
console.log(now.toString());
// Subtract the hours part of the time from the hours part of the current time
now.setHours(now.getHours() - timeParts[0]);
// Subtract the minutes part of the time from the minutes part of the current time
now.setMinutes(now.getMinutes() - timeParts[1]);
// Subtract the seconds part of the time from the seconds part of the current time
now.setSeconds(now.getSeconds() - timeParts[2]);
// Adjusted date and time
console.log(now.toString());
// You can set the time parts all in one go:
var now2 = new Date();
now2.setHours(now2.getHours() - timeParts[0],
now2.getMinutes() - timeParts[1],
now2.getSeconds() - timeParts[2]);
console.log(now2.toString());
&#13;
最后,复制日期非常简单:
var date1 = new Date();
var date2 = new Date(date1);