用JavaScript填充日期零填充

时间:2013-05-02 17:33:50

标签: javascript jquery

我想格式化这样的日期:

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);

jsFiddle code here

6 个答案:

答案 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);

FIDDLE

<小时/> 更新 - (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 %>">