如何在javascript中将完整日期转换为短日期?

cho*_*bo2 41 javascript formatting date

我有一个像这个星期一,2010年1月9日的日期

我现在想把它转换成

1/9/2010 mm/dd/yyyy

我试着这样做

    var startDate = "Monday, January 9, 2010";
    var convertedStartDate = new Date(startDate);
    var month = convertedStartDate.getMonth() + 1
    var day = convertedStartDate.getDay();
    var year = convertedStartDate.getFullYear();
    var shortStartDate = month + "/" + day + "/" + year;
Run Code Online (Sandbox Code Playgroud)

但是,它必须认为日期是以不同的格式,因为白天返回1而不是9.

Rol*_*man 48

getDay()方法返回一个数字以指示星期几(0 =太阳,1 =星期一,... 6 =星期六).使用getDate()返回某个数字的一天在一个月:

var day = convertedStartDate.getDate();
Run Code Online (Sandbox Code Playgroud)

如果您愿意,可以尝试将自定义格式函数添加到Date对象的原型中:

Date.prototype.formatMMDDYYYY = function(){
    return (this.getMonth() + 1) + 
    "/" +  this.getDate() +
    "/" +  this.getFullYear();
}
Run Code Online (Sandbox Code Playgroud)

这样做后,你可以调用formatMMDDYYY()任何的实例Date对象.当然,这只是一个非常具体的例子,如果你真的需要它,你可以编写一个基于格式化字符串的通用格式化函数,有点像java的SimpleDateeFormat(http://java.sun.com/ j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html)

(切线:Date对象总是让我困惑... getYear()vs getFullYear(),getDate()vs getDay(),getDate()范围从1..31,但是getMonth()从0..11

这是一团糟,我总是需要偷看.http://www.w3schools.com/jsref/jsref_obj_date.asp)

  • 请注意,您将要执行`return(this.getMonth()+ 1)+"/"+ this.getDate()+"/"+ this.getFullYear();`如果您希望月份正确(因为,正如Roland所说,`getMonth()`返回0..11) (7认同)

Con*_*tin 41

内置可以toLocaleDateString()完成这项工作,但它会删除日期和月份的前导 0,所以我们会得到类似“1/9/1970”的东西,在我看来这并不完美。要获得正确的格式,MM/DD/YYYY我们可以使用以下内容:

new Date(dateString).toLocaleDateString('en-US', {
  day: '2-digit',
  month: '2-digit',
  year: 'numeric',
})
Run Code Online (Sandbox Code Playgroud)

  • 不知道为什么我会遭到反对,因为这是 JS 中的内置功能。我不明白为什么有人更喜欢使用外部库而不是内置功能。 (4认同)

小智 26

干得好:

(new Date()).toLocaleDateString('en-US');
Run Code Online (Sandbox Code Playgroud)

而已 !!

你可以在任何日期对象上使用它

让我们说..你有一个名为"currentDate"的对象

var currentDate = new Date(); //use your date here
currentDate.toLocaleDateString('en-US'); // "en-US" gives date in US Format - mm/dd/yy
Run Code Online (Sandbox Code Playgroud)

(要么)

如果你想以本地格式,那么

currentDate.toLocaleDateString(); // gives date in local Format
Run Code Online (Sandbox Code Playgroud)

  • 好吧,如果我传送到过去,我不会在 IE 11 上使用 toLocaleDateString (10认同)
  • 很好的答案.比公认的IMO更好. (2认同)

小智 6

var d = new Date("Wed Mar 25 2015 05:30:00 GMT+0530 (India Standard Time)"); 
document.getElementById("demo").innerHTML = d.toLocaleDateString();
Run Code Online (Sandbox Code Playgroud)