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

如何正确格式化BigCommerce博客API的published_date日期字段

核心错误点

你之前的格式化逻辑存在两个和官方要求不匹配的问题:

  • 官方要求的日期顺序是月/日/年(美式格式),对应示例5/18/2018代表5月18日,你之前Moment写法用的DD/MM/YYYY是日/月/年顺序,日期逻辑完全错位
  • 时间部分要求使用12小时制搭配AM/PM标识,你之前用的HH是24小时制占位符,输出的时间格式不符合要求
  • 额外说明:该字段虽然名称带iso8601后缀,但实际不接受标准ISO 8601格式字符串,直接调用toISOString()输出的UTC时间必然报错。
正确格式化方法

原生JS实现(无第三方依赖)

直接基于Date对象提取字段拼接即可,注意月、日、小时不需要补前导零:

const originalDate = "2022-05-12T13:09:23-07:00";
const date = new Date(originalDate);

const month = date.getMonth() + 1; // Date对象月份从0开始计数,需要+1
const day = date.getDate();
const year = date.getFullYear();
let hours = date.getHours();
const minutes = String(date.getMinutes()).padStart(2, '0');
const seconds = String(date.getSeconds()).padStart(2, '0');
// 转换12小时制
const ampm = hours >= 12 ? 'PM' : 'AM';
hours = hours % 12;
hours = hours ? hours : 12; // 0点对应12点

const publishedDate = `${month}/${day}/${year} ${hours}:${minutes}:${seconds} ${ampm}`;

针对你提供的原始日期,这段代码会输出5/12/2022 1:09:23 PM,和官方给出的示例格式完全一致。

Moment.js实现

如果项目中已经引入Moment,修正format占位符即可:

const originalDate = "2022-05-12T13:09:23-07:00";
// 占位符说明:M=不补零月份,D=不补零日期,h=12小时制不补零小时
const publishedDate = moment(originalDate).format('M/D/YYYY h:mm:ss A');

注意不要写错占位符:

  • 不要用MM/DD:会输出带前导零的05/12,和官方要求的无前置零格式不符
  • 不要用大写HH:这是24小时制的占位符,必须用小写h对应12小时制
排错建议

如果调整格式后仍然返回400错误,可以先在请求体中移除published_date_iso8601字段测试接口是否能正常创建文章,排除其他字段报错的干扰,确认问题确实出在日期字段后再单独调试。

内容的提问来源于stack exchange,提问作者rogerio-romao

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 23:45:42