一个双重javascript函数,用于转换长日期并在今天返回';s日期的格式为mm dd yyyy

一个双重javascript函数,用于转换长日期并在今天返回';s日期的格式为mm dd yyyy,javascript,date,datetime,Javascript,Date,Datetime,我需要你的帮助 我在互联网上找不到任何其他的帮助,因为这似乎是一种方式或另一种方式。我希望能够创建一个组合的、双重的javascript函数,将长日期字符串转换为mm dd yyyy格式,当再次调用相同的函数时,没有指定要转换的字符串,只返回mm dd yyyy格式的今天的日期 例如: getDate(Fri May 22 2015 13:32:25 GMT-0400) 返回日期:2015年5月22日 getDate() 将返回今天的日期2015年5月23日嗨,这应该可以实现 格式:mm d

我需要你的帮助

我在互联网上找不到任何其他的帮助,因为这似乎是一种方式或另一种方式。我希望能够创建一个组合的、双重的javascript函数,将长日期字符串转换为mm dd yyyy格式,当再次调用相同的函数时,没有指定要转换的字符串,只返回mm dd yyyy格式的今天的日期

例如:

getDate(Fri May 22 2015 13:32:25 GMT-0400)
返回日期:2015年5月22日

getDate()

将返回今天的日期2015年5月23日

嗨,这应该可以实现

格式:mm dd yyyy

function addZeroIfRequired(dayOrMonth) {
    return dayOrMonth > 9 ? dayOrMonth : "0"+dayOrMonth;
}

function getDate(dateString) {
   var date = dateString ? new Date(dateString) : new Date();
   return addZeroIfRequired((date.getUTCMonth()+1)) + "-" + 
          addZeroIfRequired(date.getDate())+  "-" + 
          date.getUTCFullYear();
}

console.log(getDate()); // 05-23-2015
console.log(getDate("Fri May 22 2015 13:32:25 GMT-0400")); 05-22-2015
注意:
getUTCMonth()之后的+1

JSFiddle。打开控制台查看结果

ISO格式:yyyy-mm-dd

为了防止有人对相反的格式感兴趣,代码会更漂亮、更整洁:

function getDate(dateString) {
   var date = dateString ? new Date(dateString) : new Date();
   return date.toISOString().substring(0, 10);
}

console.log(getDate());
console.log(getDate("Fri May 22 2015 13:32:25 GMT-0400"));
使用
getDate()
getMonth()
getFullYear()
。您必须在
<10
月和日之前设置“0”
GetMonth()
以0开头,因此
(GetMonth()+1)


首先,我推荐一个非常强大的JS库,它可以解决所有此类问题

但如果你只想要一个片段,我的建议如下:

function twoDigits(num) { 
    return ("0" + num).substr(-2); 
}

function getFormattedDateDMY(date, separator) {
    var day = twoDigits(date.getDate());
    var month = twoDigits(date.getMonth());
    var year = date.getFullYear();
    return [day,month,year].join(separator);
}

function getFormattedDateMDY(date, separator) {
    var day = twoDigits(date.getDate());
    var month = twoDigits(date.getMonth());
    var year = date.getFullYear();
    return [month,day,year].join(separator);
}

console.log(getFormattedDateDMY(new Date(), "-"));  //23-04-2015
console.log(getFormattedDateMDY(new Date(), "-"));  //04-23-2015

谢谢,我试过了,但它将日期格式设置为2015-05-23(yyyy-mm-dd)。我需要mm-dd yyyy不保证有效。您正在向date传递一个非标准日期格式,该格式实际上应该接受“表示RFC2822或ISO 8601日期的字符串(可能使用其他格式,但结果可能是意外的)。”()您希望支持的唯一格式是
Fri may 22 2015 13:32:25 GMT-0400
吗?请参阅
function twoDigits(num) { 
    return ("0" + num).substr(-2); 
}

function getFormattedDateDMY(date, separator) {
    var day = twoDigits(date.getDate());
    var month = twoDigits(date.getMonth());
    var year = date.getFullYear();
    return [day,month,year].join(separator);
}

function getFormattedDateMDY(date, separator) {
    var day = twoDigits(date.getDate());
    var month = twoDigits(date.getMonth());
    var year = date.getFullYear();
    return [month,day,year].join(separator);
}

console.log(getFormattedDateDMY(new Date(), "-"));  //23-04-2015
console.log(getFormattedDateMDY(new Date(), "-"));  //04-23-2015