我坚持使用日期功能,对DD-DD-YYYY HH:MM::SS
显示日期的要求很小。获得单个项目(curdate.getDate() , curdate.getMonth()+1 , curdate.getFullYear()...)
的确切结果,但当时警告整个结果,月份值显示“11”的内容2.请任何人帮助我。
var curdate = new Date();
var todaysDt = curdate.getDate()+ "-" + curdate.getMonth()+1 + "-" + curdate.getFullYear() + " " +curdate.getHours() + ":" + curdate.getMinutes() + ":" + curdate.getSeconds();
todaysDt = todaysDt.split(/\/|-|\s|:/);
alert(todaysDt);
答案 0 :(得分:2)
您必须将1
添加到月份编号的子表达式括起来:
var todaysDt = curdate.getDate()+ "-" + (curdate.getMonth()+1) + "-" + curdate.getFullYear() + " " +curdate.getHours() + ":" + curdate.getMinutes() + ":" + curdate.getSeconds();
确保将子表达式(curdate.getMonth()+1)
- 评估为数字加法运算。在这些括号之外,您将字符串与+
连接起来。这是为什么?如果没有明确的括号来指示评估顺序,则会从左到右评估+
个操作链。也就是说,
a + b + c + d + e
被评估为好像被明确标点
(((a + b) + c) + d) + e
因为在JavaScript字符串连接" wins"通过算术加法,在+
操作链中左侧的字符串有效地将之后的所有内容转换为字符串连接。
当您引入显式括号时,会强制对该子表达式进行自我评估。由于从.getMonth()
返回的月份值和常量1
都是数字,因此+
将充当数字加法运算符。
答案 1 :(得分:2)
没有括号它连接显示11的1+1
,但实际上你需要求和,所以在它们周围使用括号,然后它将执行求和。
var curdate = new Date();
var todaysDt = curdate.getDate()+ "-" + (curdate.getMonth()+1) + "-" + curdate.getFullYear() + " " +curdate.getHours() + ":" + curdate.getMinutes() + ":" + curdate.getSeconds();
//todaysDt = todaysDt.split(/\/|-|\s|:/);
alert(todaysDt);
答案 2 :(得分:0)
希望格式化功能可以帮助你
Date.prototype.format = function(format) {
var o = {
"M+": this.getMonth() + 1, //month
"d+": this.getDate(), //day
"h+": this.getHours(), //hour
"m+": this.getMinutes(), //minute
"s+": this.getSeconds(), //second
"q+": Math.floor((this.getMonth() + 3) / 3), //quarter
"S": this.getMilliseconds() //millisecond
}
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
}
for (var k in o) {
if (new RegExp("(" + k + ")").test(format)) {
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
}
}
return format;
}