date.setHours()不起作用

时间:2014-09-17 09:47:11

标签: javascript datetime

我试图使用javascript从给定的日期时间字符串中减去小时数。 我的代码就像:

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

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

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

我希望以日期时间格式回答。 我在这里做错了吗?还是有其他解决方案?

5 个答案:

答案 0 :(得分:3)

首先将小时设置为-5.5是荒谬的,代码将截断为整数(-5),然后将其作为“午夜前五小时”,即昨天晚上7点。< / p>

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

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

答案 1 :(得分:2)

根据这个:

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;

答案 2 :(得分:2)

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

  

...

     

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

     

...

     

<强>参数:

     

0到59之间的整数,表示分钟。

所以,你可以这样做:

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

答案 3 :(得分:2)

使用:

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

答案 4 :(得分:-3)

试试这个:

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