date.setHours()不起作用

date.setHours() not working

本文关键字:不起作用 setHours date      更新时间:2023-09-26

我正试图使用javascript从给定的日期-时间字符串中减去小时。我的代码是这样的:

     var cbTime = new Date();    
     cbTime = selectedTime.setHours(-5.5);

其中selectedTime是给定的时间(我作为参数经过的时间)。

所以假设selectedTimeTue Sep 16 19:15:16 UTC+0530 2014我得到的答案是:1410875116995

我想要日期时间格式的答案。我是不是做错了什么?或者还有其他解决方案?

原因是setHours()setMinutes()等以Integer为参数。来自文档:

The setMinutes()方法设置指定日期的分钟数根据当地时间。

参数:

介于0和59之间的整数,表示分钟。

所以,你可以这样做:

var selectedTime = new Date(),
    cbTime = new Date(); 
   
cbTime.setHours(selectedTime.getHours() - 5);
cbTime.setMinutes(selectedTime.getMinutes() - 30);
document.write('cbTime: ' + cbTime);
document.write('<br>');
document.write('selectedTime: ' + selectedTime);

首先,将小时设置为-5.5是毫无意义的,代码将截断为整数(-5),然后将其视为"午夜前五小时",即昨天晚上7点。

其次,setHours(和其他类似的函数)修改日期对象(尝试console.log(cbTime)),返回时间戳(自epoch以来的毫秒数)。

您不应该依赖于浏览器将Date对象转换为字符串的输出格式,而应该使用get*()函数自己对其进行格式化。

据此:

http://www.w3schools.com/jsref/jsref_sethours.asp

您将得到"日期对象和1970年1月1日午夜之间的毫秒"作为setHours的返回值。

也许你正在寻找这个:

http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_sethours3

编辑:如果你想减去5.5小时,首先你必须减去5小时,然后再减去30分钟。你可以选择将5.5小时转换为330分钟,然后像这样减去:

var d = new Date();
d.setMinutes(d.getMinutes() - 330);
document.getElementById("demo").innerHTML = d;

使用:

  var cbTime = new Date();
        cbTime.setHours(cbTime.getHours() - 5.5)
        cbTime.toLocaleString();

试试这个:

 var cbTime = new Date();
    cbTime.setHours(cbTime.getHours() - 5.5)
    cbTime.toLocaleString();