gpt4 book ai didi

javascript - 比较 JS 中的日期与 d/m/yyyy 格式?

转载 作者:行者123 更新时间:2023-12-02 22:03:32 26 4
gpt4 key购买 nike

我使用此代码来比较两个日期,它非常适合 m/d/yyyyyyyy-m-d 但不适用于 d/m/yyyy(至少在 FF 和美国)。

无论如何,我可以添加我想要使用的格式(我需要它与所有三个选项一起使用)?类似于 new Date('14/1/2020', 'd/m/yyyy')

var date1 = new Date('14/1/2020');
var date2 = new Date('12/1/2020');
if( date1 > date2 ) { //... }

最佳答案

我建议拆分字符串并将各个片段作为单独的参数传递给 new Date()

const str = '14/1/2020';
const [day,month,year] = str.split('/');
const date = new Date(year, month-1, day);

如果您需要它支持所有三种格式,您可以将其设为可重用函数并让它接受 format 参数。

const toDate = (str, format = 'm/d/yyyy') => {
let month, day, year;

if (format == 'm/d/yyyy')
[month, day, year] = str.split("/");
else if (format == 'd/m/yyyy')
[day, month, year] = str.split("/");
else if (format == "yyyy-m-d")
[year, month, day] = str.split("-");
else
throw "Unexpected date format";

return new Date(year, month-1, day);
}

const str1 = '1/14/2020';
const str2 = '14/1/2020';
const str3 = '2020-1-14';

console.log( toDate(str1) );
console.log( toDate(str2,'d/m/yyyy') );
console.log( toDate(str3,'yyyy-m-d') );

或者,对于在需要添加格式时可能更具可扩展性的方法,您可以使用对象来定义它们:

const validFormats = [
{
format: 'm/d/yyyy',
delimiter: '/',
order: 'mdy'
},
{
format: 'd/m/yyyy',
delimiter: '/',
order: 'dmy'
},
{
format: 'yyyy-m-d',
delimiter: '-',
order: 'ymd'
}
];

const toDate = (dateString, format = 'm/d/yyyy') => {
const validFormat = validFormats.find(d => d.format === format)
if (!validFormat) throw "Unexpected date format";

const order = validFormat.order;
const dateParts = dateString.split(validFormat.delimiter);
const year = dateParts[order.indexOf('y')];
const month = dateParts[order.indexOf('m')];
const day = dateParts[order.indexOf('d')];
return new Date(year,month-1,day);
};

const str1 = '1/14/2020';
const str2 = '14/1/2020';
const str3 = '2020-1-14';

console.log( toDate(str1) );
console.log( toDate(str2,'d/m/yyyy') );
console.log( toDate(str3,'yyyy-m-d') );

关于javascript - 比较 JS 中的日期与 d/m/yyyy 格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59793910/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com