我有一個接收不同格式日期的函式。這個函式可以接收兩種格式:
2022-06-04
或者
04/06/2022
我希望具有相同的格式,例如:
2022-06-04
例如:
public getMaxduration(data: object[]): number {
data.forEach((line) => {
const periodFrom = new Date(line['period_to'];
const periodTo = new Date(line['period_from'];
console.log(periodFrom);
console.log(periodTo);
})
}
我的問題是,如果我收到格式為 dd/mm/yyyy 的日期不起作用。那么如何將此函式中的所有日期格式化為 yyyy-mm-dd 格式?
uj5u.com熱心網友回復:
您可以使用正則運算式來檢查輸入格式是什么,然后使用 String.split() 從輸入字串創建一個 [年、月、日] 值陣列。如果輸入日期的格式為日/月/年,我們將反轉它以獲得正確的值。
一旦我們有了年、月、日,我們將使用 map 和 join 來回傳正確的輸出格式。
function reformatDate(input) {
let a = [];
if (/\d{4}-\d{1,2}-\d{1,2}/.test(input)) {
a = input.split('-'); // yyyy-M-d
} else if (/\d{1,2}\/\d{1,2}\/\d{4}/.test(input)) {
a = input.split('/').reverse(); // d/M/yyyy
} else {
throw new Error('Unknown date format:', input);
}
return a.map(s => s.padStart(2, '0')).join('-');
}
const inputs = ['2022-10-18', '2022-08-23', '18/10/2022', '31/2/2019'];
console.log('Input'.padEnd(12), 'Output')
inputs.forEach(input => {
console.log(input.padEnd(12), reformatDate(input))
})
uj5u.com熱心網友回復:
兩個選項
1.使用時刻
return moment(new Date(dateInput)).format('YYYY-MM-DD');
2.或者這個
const date = new Date(dateInput);
return date.getFullYear() "-" date.getMonth() "-" date.getDay();
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/517340.html