在 JavaScript 中将日期从一种格式转换为另一种格式
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 日期/时间库。有了它,您可以轻松地在不同格式的日期之间进行转换。在您的情况下,它将是:
string newDate = moment(currentDate, currentFormatString).format(newFormatString)
例如,moment("21/10/14","DD/MM/YY").format("MM/DD/YY") 将返回 "10/21/14"
相关讨论
- var newDate = moment("Nov/21/2015", "mmm/DD/YYYY").format("MM/DD/YYYY");alert(newDate); ——这不起作用。
- ^ mmm/DD/YYYY 不是有效格式,您正在寻找:var newDate = moment("Nov/21/2015","MMM/DD/YYYY").format("MM/DD/YYYY");alert(newDate);
你可以使用下面的函数
|
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 ="/"; if (strOutputFormat.length != 3) throw new Error('wrong output format splitter :('); let date = null; if (value instanceof Date) { if (typeof value == 'string') { var strInputFormat = inputFormat.split(inputSplitter).map(i => i.toUpperCase()); if (strInputFormat.length != 3) throw new Error('wrong input format splitter :('); let dateElements = value.split(inputSplitter); date = { if (!date) throw new Error('unsupported value type:('); let result = date[strOutputFormat[0]] + outputSplitter 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 strFormat = dateFormat.split('.'); str = strDate.split('.');
if (strFormat[0].substr(0, 1) == 'd' && strFormat[1].substr(0, 1) == 'M' && if (strFormat[0].substr(0, 1) == 'M' && strFormat[1].substr(0, 1) == 'd' && if (strFormat[0].substr(0, 1) == 'y' && strFormat[1].substr(0, 1) == 'M' && if (strFormat[0].substr(0, 1) == 'y' && strFormat[1].substr(0, 1) == 'd' && return res; |
看来你应该使用jquery-dateformat的query-dateformat git hub的库
或者你可以使用像 date-time-formate 这样的普通函数,使用库来配置格式模板
相关讨论
- 我不明白如何使用 jquery-dateformat 来满足我的需要。转换函数如何知道当前格式是什么?
- JavaScript/或任何第三方库无法知道您的日期字符串的格式,除非您指定它(如果第三方支持的话)。它将假定它是 "mm/dd" 格式,即月份出现在一天之前。
- 所以它不能回答我的问题。我需要一个可以设置当前格式的功能。