date.setHours()不起作用
date.setHours() not working
我正试图使用javascript从给定的日期-时间字符串中减去小时。我的代码是这样的:
var cbTime = new Date();
cbTime = selectedTime.setHours(-5.5);
其中selectedTime
是给定的时间(我作为参数经过的时间)。
所以假设selectedTime
是Tue 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();
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 监视函数从服务返回不起作用,但作用域函数起作用
- 幻灯片滚动javascript不起作用
- 简单的javascript在Shopify中不起作用
- Recaptcha在IE7和IE8中不起作用
- Ember Data DS.Model's set函数不起作用
- JsFiddle上的鼠标事件不起作用
- 我的AngularJS表达式没有'不起作用
- 点击按钮输入不起作用
- 面向对象的Javascript代码在IE7中不起作用
- 分部隐藏在jquery中不起作用
- 在phonegap应用程序内部重定向不起作用
- Array.length似乎不起作用;console.log则显示其他情况
- $ionicplatform内的$scope不;不起作用
- 我的javascript for循环不起作用
- Meteor-添加用户自定义字段的方法不起作用
- 为什么 .focus() 不起作用,而 .css(“color”,“red”) 在同一个选择器上起作用
- Textarea必需的attribut在javascript中不起作用
- 为什么javascript:void(0)在Firefox中不起作用
- date.setHours()不起作用