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

JavaScript对象ISO日期格式化及字段引用问题求助

问题解答

1. 字段引用报错的解决

报错obj.data[field].split is not a function的核心原因是你的示例对象没有data嵌套层级,直接访问obj[field]即可。同时建议增加字段校验,避免字段不存在或非字符串的异常情况:

const formatISODate = function (obj, field) {
  // 校验字段合法性
  if (!obj[field] || typeof obj[field] !== 'string') {
    return ''; // 可根据需求返回默认值
  }
  // 移除多余的data层级,解构日期部分
  const [year, month, day] = obj[field].split('T')[0].split('-');
  return `${day} ${month} ${year}`;
}

调用示例:

const user = {
  "_id": "63dd35e801ad6ada9a5eeb08",
  "name": "Joe Bloggs",
  "technicalCertification": true,
  "salesCertification": true,
  "salesCertificationExpiry": "2023-12-27T12:02:31.043Z",
  "techicalCertificationExpiry": "2024-09-29T12:02:48.254Z"
};

console.log(formatISODate(user, 'salesCertificationExpiry')); // 输出 "27 12 2023"

2. 更简便的日期格式化实现

手动拆分字符串的方式不仅繁琐,还容易因日期格式变动出错,推荐用原生API实现更健壮的格式化:

方法一:用Intl.DateTimeFormat(支持本地化,推荐)

const formatISODate = function (obj, field) {
  if (!obj[field]) return '';
  const date = new Date(obj[field]);
  // 按「日 月 年」格式输出,可调整配置实现不同分隔符或格式
  return new Intl.DateTimeFormat('en-GB', {
    day: '2-digit',
    month: '2-digit',
    year: 'numeric'
  }).format(date).replace('/', ' ').replace('/', ' ');
}

方法二:用Date对象的UTC方法

const formatISODate = function (obj, field) {
  if (!obj[field]) return '';
  const date = new Date(obj[field]);
  // 补零确保两位数格式
  const day = String(date.getUTCDate()).padStart(2, '0');
  const month = String(date.getUTCMonth() + 1).padStart(2, '0'); // 月份从0开始,需+1
  const year = date.getUTCFullYear();
  return `${day} ${month} ${year}`;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:08:31