Convert Date from one format to another format in JavaScript
我有一个格式为#1 的javascript 日期字符串。我需要将其转换为格式 #2。
当一种格式是"dd/mm/yy"而另一种格式是"mm/dd/yy"时,问题就开始了。
格式动态变化,我将格式作为字符串,但我需要一个类似
的函数
1 | Date newDate = convert(currentDate, currentFormatString, newFormatString). |
我该怎么做呢?
您应该研究一下momentjs,它是一个javascript 日期/时间库。有了它,您可以轻松地在不同格式的日期之间进行转换。在您的情况下,它将是:
例如,
你可以使用下面的函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | console.log(changeDateFormat('12/1/2020','dd/MM/yyyy','MM/dd/yyyy')); function changeDateFormat(value, inputFormat, outputFormat) { let outputSplitter ="/"; let strOutputFormat = outputFormat.split(outputSplitter).map(i => i.toUpperCase()); if (strOutputFormat.length != 3) { strOutputFormat = outputFormat.split('-'); outputSplitter = '-'; } if (strOutputFormat.length != 3) throw new Error('wrong output format splitter :('); let date = null; if (value instanceof Date) { date = { ["YYYY"]: value.getUTCFullYear(), ["MM"]: value.getMonth() + 1, ["DD"]: value.getDate() } } if (typeof value == 'string') { let inputSplitter ="/"; var strInputFormat = inputFormat.split(inputSplitter).map(i => i.toUpperCase()); if (strInputFormat.length != 3) { strInputFormat = inputFormat.split('-'); inputSplitter = '-'; } if (strInputFormat.length != 3) throw new Error('wrong input format splitter :('); let dateElements = value.split(inputSplitter); if (dateElements.length != 3) throw new Error('wrong value :('); date = { [strInputFormat[0]]: dateElements[0], [strInputFormat[1]]: dateElements[1], [strInputFormat[2]]: dateElements[2], } } if (!date) throw new Error('unsupported value type:('); let result = date[strOutputFormat[0]] + outputSplitter + date[strOutputFormat[1]] + outputSplitter + date[strOutputFormat[2]]; return result; } |
您可以使用上述 momnet.js 的答案或下面的函数进行拆分和使用它
对于使用 moment.js,请确保您以大写形式输入旧格式和新格式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | function parseDate(strDate) { var dateFormat = $('#currentDateFormat').val(); var str; var res; var strFormat = dateFormat.split('.'); if (strFormat.length != 3) strFormat = dateFormat.split('/'); if (strFormat.length != 3) strFormat = dateFormat.split('-'); str = strDate.split('.'); if (str.length != 3) str = strDate.split('/'); if (str.length != 3) str = strDate.split('-'); if (strFormat[0].substr(0, 1) == 'd' && strFormat[1].substr(0, 1) == 'M' && strFormat[2].substr(0, 1) == 'y') // for dd MM yyyy res = new Date(str[2], str[1], str[0]); if (strFormat[0].substr(0, 1) == 'M' && strFormat[1].substr(0, 1) == 'd' && strFormat[2].substr(0, 1) == 'y') // for MM dd yyyy res = new Date(str[2], str[0], str[1]); if (strFormat[0].substr(0, 1) == 'y' && strFormat[1].substr(0, 1) == 'M' && strFormat[2].substr(0, 1) == 'd') res = new Date(str[0], str[1], str[2]); if (strFormat[0].substr(0, 1) == 'y' && strFormat[1].substr(0, 1) == 'd' && strFormat[2].substr(0, 1) == 'M') res = new Date(str[0], str[2], str[1]); return res; } |
看来你应该使用jquery-dateformat的query-dateformat git hub的库
或者你可以使用像 date-time-formate 这样的普通函数,使用库来配置格式模板