创建日期对象并与今天的日期进行比较

时间:2017-01-19 12:08:10

标签: javascript date

我有一个包含时间的对象。例如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";
 }

3 个答案:

答案 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)

您的代码存在许多问题。我会经历并希望能抓住一切。

  1. 使用var在循环中声明变量。 (further reading

  2. 当您创建变量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定义的适当时间。

  3. text +-没有任何意义。我怀疑是一个拼写错误,你的意思是text +=,它会将右边的值附加到变量text。或者,也许text =将分配值,替换那里的

  4. 使用"It is "+ minutesLeft[i] + " milliseconds left"
  5. minutesLeft[i]将从字符串中获取单个字符(如果值是数组,则从数组中获取项目)。你的只是一个约会对象,而不是一个数组,所以我怀疑你只是想完全放弃[i]部分。

  6. 如果您想要了解当前日期/时间与所选日期/时间之间的差异,则需要使用nowDateminutesLeft进行一些算术运算。我认为这是你所追求的差异。

  7. 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。我想把当前时间减去我的物品时间。

您的代码似乎很混乱,您似乎正在尝试执行以下操作:

&#13;
&#13;
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;
&#13;
&#13;

最后,复制日期非常简单:

var date1 = new Date();
var date2 = new Date(date1);