You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何格式化对象数组中的时间戳字段并保留数组结构?

格式化数组中对象的日期字段

推荐方案:创建新数组(不修改原数据)

这种方式能保留原始数组内容,避免后续操作意外影响原数据,用Array.map()遍历处理每个对象:

方式1:正则表达式提取重组

直接匹配原日期字符串中的关键部分,拼接成目标格式:

const myArray = [
    { title: "one", location: "one", start_date_time: "2023-06-28T08:47:00.000Z" },
    { title: "two", location: "two", start_date_time: "2023-06-28T08:47:00.000Z" }
];

const formattedArray = myArray.map(item => {
    // 匹配年、月、日、时、分
    const dateMatch = item.start_date_time.match(/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})/);
    if (dateMatch) {
        return {
            ...item, // 复制原对象的其他字段
            start_date_time: `${dateMatch[1]} ${dateMatch[2]} ${dateMatch[3]} ${dateMatch[4]}:${dateMatch[5]}`
        };
    }
    return item; // 日期格式不匹配时返回原对象
});

console.log(formattedArray);

方式2:用Date对象格式化(处理时区更可靠)

如果需要考虑时区(原日期是UTC格式),用Date对象的UTC方法提取时间分量,再补零拼接:

const formattedArrayWithDate = myArray.map(item => {
    const date = new Date(item.start_date_time);
    const year = date.getUTCFullYear();
    const month = String(date.getUTCMonth() + 1).padStart(2, '0'); // 月份从0开始,需+1并补零
    const day = String(date.getUTCDate()).padStart(2, '0');
    const hours = String(date.getUTCHours()).padStart(2, '0');
    const minutes = String(date.getUTCMinutes()).padStart(2, '0');
    
    return {
        ...item,
        start_date_time: `${year} ${month} ${day} ${hours}:${minutes}`
    };
});

可选方案:直接修改原数组

如果不需要保留原始日期值,用Array.forEach()遍历更新原对象的字段:

myArray.forEach(item => {
    const dateMatch = item.start_date_time.match(/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})/);
    if (dateMatch) {
        item.start_date_time = `${dateMatch[1]} ${dateMatch[2]} ${dateMatch[3]} ${dateMatch[4]}:${dateMatch[5]}`;
    }
});

// 或用Date对象方式
myArray.forEach(item => {
    const date = new Date(item.start_date_time);
    const year = date.getUTCFullYear();
    const month = String(date.getUTCMonth() + 1).padStart(2, '0');
    const day = String(date.getUTCDate()).padStart(2, '0');
    const hours = String(date.getUTCHours()).padStart(2, '0');
    const minutes = String(date.getUTCMinutes()).padStart(2, '0');
    
    item.start_date_time = `${year} ${month} ${day} ${hours}:${minutes}`;
});

内容的提问来源于stack exchange,提问作者Papgooner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 01:04:59