将dd/mm/yyyy转换为javascript中的mm/dd/yyyy格式

22
我想在 JavaScript 中将 dd/mm/yyyy 转换为 mm/dd/yyyy。

1
你想要转换的是字符串吗?请提供一些代码,说明如何初始化第一个格式。 - Nick Weaver
你正在使用Date()方法吗? - Trevor Arjeski
2
如果这是用户输入,你怎么知道它是一个形式而不是另一个形式?最好使用某种JavaScript日期选择器。 - Roman
您的标题和问题存在冲突。是dd/mm/yyyy还是dd//yyyy? - JasonFruit
您的标题似乎表明您想将“mon”转换为“mm”,例如MAR转换为03。 - Alistair Laing
var date = "09/03/2017>14:28"; var regex = /(\d+)/g; console.log(date.match(regex)); - Johan Hoeksma
12个回答

22
var initial = 'dd/mm/yyyy'.split(/\//);
console.log( [ initial[1], initial[0], initial[2] ].join('/')); //=> 'mm/dd/yyyy'

编辑于2021/05/14:使用ES20xx的代码片段。

const pad = v => v.padStart(2, `0`);
const initialDate= new Date().toLocaleDateString("nl-NL")
  .split(/[-/]/).map(pad).join("/");
const toFragments = dateString => initialDate
  .split(/[-/]/).map(pad);
const dateTo_mmddyyyy = ([date, month, year], divider = "/") => 
  `${month}${divider}${date}${divider}${year}`;
const [date, month, year] = toFragments(initialDate);
console.log( `initial (dd/mm/yyyy): ${initialDate}`);
console.log( `reformatted to mm/dd/yyyy (array join): ${
  [month, date, year].join('/') }` );
console.log( `reformatted to mm-dd-yyyy (function): ${
  dateTo_mmddyyyy(toFragments(initialDate), "-") }` );


太棒了,伙计! - Aleksei Maide

19
var date = "24/09/1977";
var datearray = date.split("/");

var newdate = datearray[1] + '/' + datearray[0] + '/' + datearray[2];

newdate将包含09/24/1977。split方法会在发现“/”时拆分字符串,所以如果日期字符串为"24/9/1977",它仍然可以运行并返回9/24/1977。


最快、最简单的方式 - Naveen DA

11

这是 moment.js 的版本。该库可在 http://momentjs.com/ 找到。

//specify the date string and the format it's initially in
var mydate = moment('15/11/2000', 'DD/MM/YYYY'); 

//format that date into a different format
moment(mydate).format("MM/DD/YYYY");

//outputs 11/15/2000

6

dd/mon/yyyy 转换为 mm/dd/yyyy

months = {'jan': '01', 'feb': '02', 'mar': '03', 'apr': '04', 'may': '05',
'jun': '06', 'jul': '07', 'aug': '08', 'sep': '09', 'oct': '10', 'nov': '11',
'dec': '12'};

split = 'dd/mon/yyyy'.split('/');
[months[split[1]], split[0], split[2]].join('/');

dd/mm/yyyy转换为mm/dd/yyyy

split = 'dd/mm/yyyy'.split('/');
[split[1], split[0], split[2]].join('/');

3

尝试以下示例,其中使用正则表达式查找和切换字符串的部分:

var d1 = "03/25/2011";
var d2 = d1.replace(/^(\d{1,2}\/)(\d{1,2}\/)(\d{4})$/,"$2$1$3");
alert("d1:"+d1 +"\n d2:"+d2 )

/* 
// OUTPUT

  d1: 03/25/2011
  d2: 25/03/2011

*/

编辑:

我注意到其他回答都没有使用正则表达式,我真的很好奇为什么... :)


有点hack,但在如此短的时间内提供了非常好的快速解决方案。感激! - Saeed Afzal

3
var months = new Array("jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec");
var ddSplit = '12/23/2011'.split('/');  //date is mm/dd/yyyy format
alert(ddSplit[1]+'-'+months[ddSplit[0]-1] + '-' + ddSplit[2])

3
您可以使用以下指定的函数,1日期和2日期分隔符(可选)。日期将以所需格式返回。
const setFormatDDMMYYYYtoMMDDYYYY = (date, separator = '/') => {
  const [day, month, year] = date.split('/');
  return month + separator + day + separator + year;
};

2
一个解释会很有帮助,这样人们就可以从你的答案中学习,而不仅仅是从网上复制粘贴一些代码。请参见[答案]。 - Robert

1

Try this, it works for me:

var fechaLatinFormat= "05-10-2016";//octuber 5, 2016 - octubre 5 del 2016
var datePieces = fechaLatinFormat.split("-"); 
var preFinalDate = new Date(parseInt(datePieces[2]), parseInt(datePieces[1]) - 1, parseInt(datePieces[0]));    
console.log(preFinalDate.format("mm-dd-yyyy")); 

或者:

var fechaLatinFormat= "05-10-2016";//octuber 5, 2016 - octubre 5 del 2016
var datePieces = fechaLatinFormat.split("-"); 
var preFinalDate = [datePieces[1] , datePieces[0] , datePieces[2]];
console.log(preFinalDate.join("-"));

1
var date = "31/03/2017 14:28";
var regex = /(\d+)/g;
var d = date.match(regex);
var out = d[2] + "-" + d[1] + "-" + d[0] + " " + d[3] + ":" + d[4];
var dag = new Date(out);
console.log(dag);

这是针对数字的正则表达式的唯一解决方案


0
  var currentDate = new Date()
  var day = currentDate.getDate()
  var month = currentDate.getMonth()
  var year = currentDate.getFullYear()
  document.write("<b>" + month + "/" + day + "/" + year + "</b>")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接