我试图使用javascript从给定的日期时间字符串中减去小时数。 我的代码就像:
var cbTime = new Date();
cbTime = selectedTime.setHours(-5.5);
其中selectedTime
是给定时间(我作为参数传递的时间)。
假设selectedTime
是Tue Sep 16 19:15:16 UTC+0530 2014
我得到的答案是:1410875116995
我希望以日期时间格式回答。 我在这里做错了吗?还是有其他解决方案?
答案 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之间的整数,表示分钟。
所以,你可以这样做:
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;
答案 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();