我真的很喜欢Javascript,我这样写代码。我觉得它应该有效。我做的顺序是错误的吗?如果它不能像这样工作,为什么不呢?
var mydate = new Date();
alert( mydate.toLocaleTimeString().split(":").pop().join(':'));
split()
使它成为一个数组,pop()
去掉数组的末尾,join()
又使它成为一个字符串,对吗?
Array#slice
与负结束/秒参数一起使用。
Array#pop
返回最后一个元素,但不返回数组本身。 slice
返回数组的副本,其中包含从 start 开始的所有模拟,而不返回最后一个元素。
var mydate = new Date();
console.log(mydate.toLocaleTimeString().split(":").slice(0, -1).join(':'));
不,pop()
将从数组中删除最后一个元素并返回它。
要实现您正在尝试的操作,您需要首先将split()
的结果分配给一个变量,然后您可以引用:
var mydate = new Date(),
myarr = mydate.toLocaleTimeString().split(':');
myarr.pop();
console.log(myarr.join(':'));
如果你想实现的只是小时:分钟,你可以简单地这样做
var mydate = new Date();
console.log(mydate.getHours() + ':' + mydate.getMinutes());
您正在尝试使用方法链,其中链中的下一个方法使用先前执行的方法的输出。它不起作用的原因是因为"join(("方法是数组的原型,但"pop(("返回一个数组元素,该元素没有上述方法,这就是错误的原因。重构代码,如下所示:
var myDate = new Date(),
myDateArr = myDate.toLocaleTimeString().split(':');
myDateArr.pop(); // Remove the seconds
myDate = myDateArr.join(':'); // Returns string
console.log(myDate);
希望这有帮助。
试试这个
var mydate = new Date();
alert( mydate.toLocaleTimeString().split(":").slice(0, 2).join(":"));