我想格式化这样的日期:
May 02 2013
但此刻,我的格式如下:
May 2 2013
如何将此类日期归零,以便日期中的天类似于02
,而不仅仅是2
?
以下是我正在使用的代码:
var m_names = new Array("January", "February", "March",
"April", "May", "June", "July", "August", "September",
"October", "November", "December");
var d = new Date();
var curr_date = d.getDate();
var curr_month = d.getMonth();
var curr_year = d.getFullYear();
alert( m_names[curr_month] + " " +curr_date + " " + curr_year);
答案 0 :(得分:17)
您可以实现以下逻辑:
var d = new Date();
var curr_date = ("0" + d.getDate()).slice(-2);
var curr_month = d.getMonth();
var curr_year = d.getFullYear();
console.log( m_names[curr_month] + " " +curr_date + " " + curr_year);
<小时/>
更新 - (2017年10月1日)
EcmaScript 2017或ES8引入了两种新的String原型方法:
padStart()
和padEnd()
。我们可以在字符串之前或之后添加一些额外的空格或破折号(或任何其他字符)。我们可以在这里使用它:
var curr_date = d.getDate().toString().padStart(2,0);
(如果我们不需要将 d.getDate()转换为字符串,则此语法可能会更短,因为 padStart 仅适用在字符串)
<强>演示:强>
var m_names = new Array("January", "February", "March",
"April", "May", "June", "July", "August", "September",
"October", "November", "December");
var d = new Date('10/1/2017');
var curr_date = d.getDate().toString().padStart(2, 0);
var curr_month = d.getMonth();
var curr_year = d.getFullYear();
var formatted_date = m_names[curr_month] + " " + curr_date + " " + curr_year;
console.log(formatted_date);
答案 1 :(得分:4)
This就是你能做到的。只要查看日期是否大于9.如果是,请使用它,如果没有添加前导零
var curr_date = d.getDate();
curr_date = curr_date > 9 ? curr_date : "0" + curr_date;
答案 2 :(得分:2)
验证curr_date
是否低于9.如果是,请添加"0" + curr_date
。
所以,你可以像下面那样内联:
curr_date = (curr_date <= 9 ? "0" : "") + curr_date
或者,直接在警报中:
alert( m_names[curr_month] + " " +
(curr_date <= 9 ? "0" : "") + curr_date +
" " + curr_year);
如您所见,我使用了?:
operator。
在计算机编程中,
?:
是一个三元运算符,它是几种编程语言中基本条件表达式语法的一部分。它通常被称为条件运算符,内联if(iif)或三元if。
很简单!看:
condition ? value_if_true : value_if_false`
或
variable1 === variable2 ? value_if_true : value_if_false
查看更新的FIDDLE。
答案 3 :(得分:1)
在当前的开发版Chrome(v28.0.1496.0)中,每个Number对象都有一个toPaddedString(n)
函数。
Number(16).toPaddedString(4)
"0016"
这是一个非常狭窄的目标浏览器,所以我怀疑它会对你有多大好处。它也可能是Chrome生产版的一部分,但我目前还没有那个版本。该功能不是EcmaScript 5.1的一部分,因此最好不要依赖它。但是,它不是[native code]
,所以......
Number(1).toPaddedString
function g(k,j){var i=this.toString(j||10);return"0".times(k-i.length)+i}
因此,要在任何浏览器中使用此功能,请包含以下代码行:
Number.prototype.toPaddedString = function g(k,j){var i=this.toString(j||10);return"0".times(k-i.length)+i};
然后你的月份可以填充,如下:
var curr_month = d.getMonth().toPaddedString(2);
答案 4 :(得分:0)
$("#cuentapendiente").focusout(function(){
if($(this).val()!=""){
$(this).val(zeroFill($(this).get(0).value,6))
}
}
答案 5 :(得分:-1)
coffeescript中的这个解决方案(包含在eco文件中)为我工作
<% zero_pad = (x) -> if x < 10 then '0'+x else ''+x %>
<% d = new Date() %>
<% m = d.getFullYear() %>
<% m += "-"+zero_pad (d.getMonth()+1) %>
<% m += "-"+zero_pad d.getDate() %>
<input type="date" name="date" width="20" value="<%- m %>">