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

Abh*_*bhi 2 javascript

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

传入日期可以是以下格式

2015-01-25 or nil
Run Code Online (Sandbox Code Playgroud)

输出日期应该是

01/25/2015 or nil
Run Code Online (Sandbox Code Playgroud)

我尝试从以下链接 转换日期yyyy/mm/dd到MM dd yyyy,但无法使其工作.

谢谢你的帮助.

忘记提及,在xml文件中,作为nil的传入日期具有以下格式

<Through_Date__c xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
Run Code Online (Sandbox Code Playgroud)

因此,如果我得到上面的格式,输出应该只是零

has*_*sin 10

日期toString函数对格式化有一些支持.看到这个.你还想处理我从这里拿到的未定义的案例.所以,对于你的情况你可以这样做:

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

编辑:解决评论

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

var d = date.getDate().toString();
(d[1]?d:"0"+d[0])
Run Code Online (Sandbox Code Playgroud)

我已经对小提琴进行了更新


小智 8

尝试使用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));
Run Code Online (Sandbox Code Playgroud)

使用String#split和Array#join,push&shift:

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));
Run Code Online (Sandbox Code Playgroud)