用JavaScript将日期从一种格式转换为另一种格式
Convert Date from one format to another format in JavaScript
我有一个javascript格式的日期字符串,格式为#1。我需要将其转换为#2格式。
当一种格式为"dd/mm/yy",而另一种格式则为"mm/dd/y"时,问题就开始了。
格式是动态变化的,我有字符串格式,但我需要一个类似的函数
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"
您可以使用momnet.js的上述答案或下面的函数进行拆分并使用
使用moment.js时,请确保在大写中输入新旧格式
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;
}
您可以使用下面的函数
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;
}
您似乎应该使用query dateformat git hub库来实现jquery dateformat
或者你可以使用像日期-时间格式这样的普通函数,使用库来配置格式模板
相关文章:
- 有没有一种方法可以从两个标签之间提取文本,并以我选择的格式输出
- 解析一个复杂的JavaScript表达式,将其改写为另一种格式
- 通过javascript将带有日期的字符串格式化为另一种格式
- 将JSON从一种格式转换为另一种格式
- 将 JSON 日期解析为另一种格式
- 将 json 文件转换为另一种格式
- TinyMCE 4:自动将一种块格式应用于新块
- 是Javascript的一种特殊字符串格式
- 我在变量中有一个日期格式.如何将该变量日期转换为另一种格式
- 用JavaScript将日期从一种格式转换为另一种格式
- 如何将字段数据从一种格式更改为另一种格式
- 是否有可能实现一种“;猜测;此日期格式基于数组中的信息
- 将REST JSON输出格式化为另一种格式
- 如何将一种日期格式转换为另一种
- 有没有一种原生的JavaScript方法来解析格式不佳的类似JSON的字符串
- 如果有一种方法可以在Javascript中以JSON格式访问对象属性
- 给定一个特定的日期,是否有一种方法可以在不知道日期是以哪种格式书写的情况下在自由文本文档中搜索该日期?
- 将欧洲价格转换为另一种格式
- 如何将json从一种格式转换为另一种格式
- 当我尝试从另一种日期格式创建一个日期对象时,结果日期正在改变它的值