在javascript中将yyyy-MM-dd转换为MM / dd / yyyy

时间:2015-01-31 00:24:17

标签: javascript

这可能是一个简单的解决方案,但我被卡住了,基本上我需要将传入的yyyy-MM-dd转换为MM / dd / yyyy,如果传入日期为零,则输出也应为零。

传入日期可以是以下格式

2015-01-25 or nil

输出日期应为

01/25/2015 or nil

我是从以下链接尝试一个 Convert Date yyyy/mm/dd to MM dd yyyy但无法使其发挥作用。

感谢您的帮助。

忘记提及,在xml文件中,nil的传入日期格式如下

<Through_Date__c xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>

因此,如果我得到上述格式,输出应该只是nil

7 个答案:

答案 0 :(得分:8)

日期toString功能支持格式化。见this。而且你还想处理我从here获取的未定义的案例。因此,对于您的情况,您可以这样做:

function format(inputDate) {
    var date = new Date(inputDate);
    if (!isNaN(date.getTime())) {
        // Months use 0 index.
        return date.getMonth() + 1 + '/' + date.getDate() + '/' + date.getFullYear();
    }
}

编辑:发表评论

如果填充很重要,您只需将其添加到:

var d = date.getDate().toString();
(d[1]?d:"0"+d[0])

我已对fiddle

进行了更新

答案 1 :(得分:6)

尝试使用RegEx:

var format = function(input) {
  var pattern = /(\d{4})\-(\d{2})\-(\d{2})/;
  if (!input || !input.match(pattern)) {
    return null;
  }
  return input.replace(pattern, '$2/$3/$1');
};

console.log(format('2015-01-25'));
console.log(format('2000-12-01'));
console.log(format(''));
console.log(format(null));

使用String#split和Array#join,push&amp;移:

var format = function(input) {
  var array = (input || '').toString().split(/\-/g);
  array.push(array.shift());
  return array.join('/') || null;
};

console.log(format('2015-01-25'));
console.log(format('2000-12-01'));
console.log(format(''));
console.log(format(null));

答案 2 :(得分:2)

如果你想去贫民窟风格并使用易于理解的代码,而你不关心使用日期对象,试试这个!

function changeDateFormat(inputDate){  // expects Y-m-d
    var splitDate = inputDate.split('-');
    if(splitDate.count == 0){
        return null;
    }

    var year = splitDate[0];
    var month = splitDate[1];
    var day = splitDate[2]; 

    return month + '\\' + day + '\\' + year;
}

var inputDate = '2015-01-25';
var newDate = changeDateFormat(inputDate);

console.log(newDate);  // 01/25/2015

答案 3 :(得分:0)

如果您的日期尚未从字符串中解析,则可以简单地重新排列其组件:

var s = '2015-01-25';
if (s) { 
    s = s.replace(/(\d{4})-(\d{1,2})-(\d{1,2})/, function(match,y,m,d) { 
        return m + '/' + d + '/' + y;  
    });
}

答案 4 :(得分:0)

谢谢大家,我能够从你的所有帖子中获取一些想法,并提出了这个代码似乎在我的情况下工作正常

if((typeof inStr == 'undefined') || (inStr == null) || 
(inStr.length <= 0)) {
return '';
}
var year = inStr.substring(0, 4);
var month = inStr.substring(5, 7);
var day = inStr.substring(8, 10);
return month + '/' + day + '/' + year;

答案 5 :(得分:0)

您也可以使用Vanilla JS尝试以下方法。我已将日期转换为string并对其进行了解析,以获取所需的格式:

function tranformDate(strDate) {
    let result = '';

    if (date) {
      let parts = date.split('-');
      result = `${parts[1]}/${parts[2]}/${parts[0]}`;
    }
    return result;
}

let date = new Date().toISOString().split('T')[0];
console.log('raw date: ' + date);
console.log('formatted date: ' + tranformDate(date));

答案 6 :(得分:0)

您可以处理各种格式的 JavaScript 日期。

对于 dd/MM/yyyy,您可以使用

var date = new Date().toLocalDateString()

var date = new Date('2021-07-28').toLocalDateString()

输出:'28/07/2021'

MM/dd/yyyy

 var date = new Date().toLocaleDateString("en-US", { year: "numeric", month: "2-digit", day: "2-digit" })

 var date = new Date('2021-07-28').toLocaleDateString("en-US", { year: "numeric", month: "2-digit", day: "2-digit" })

输出:'07/28/2021'

或者,您可以使用以下日期函数处理自定义日期格式

let date = new Date()
let dateString = [
            date.getMonth() + 1,
            date.getDate(),
            date.getFullYear(),
        ].join('/')
    }

输出:07/28/2021