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

如何去除toLocaleDateString生成日期中的多余逗号?

解决方案

问题出在en-US本地化规则中,日期与时间组合显示时默认会用逗号分隔。以下是几种可行的解决办法:


方法一:直接替换多余逗号(最简单)

在EJS模板里对生成的日期字符串做替换操作,直接去掉逗号:

<td>
  <span>
    <%= topic.createdAt.toLocaleDateString("en-US", options).replace(',', '') %>
  </span>
</td>

这种方式快速直接,因为你的目标格式里只有这一个多余逗号,替换后就能得到9/21 2:09 AM。


方法二:拆分日期与时间后拼接(更稳妥)

如果担心本地化格式后续变化,可以分别生成日期和时间部分,再手动拼接:

方案A:后端预处理(推荐,模板更简洁)

修改你的GET路由,提前为每个话题生成格式化好的日期字段:

router.get("/", async function (req, res, next) {
  const dateOpts = { month: "numeric", day: "numeric" };
  const timeOpts = { hour: "numeric", minute: "2-digit" };

  const [list_topic] = await Promise.all([
    Topic.find().sort({ createdAt: -1 }).exec(),
  ]);

  // 为每个话题添加预格式化的日期属性
  const formattedTopics = list_topic.map(topic => {
    const datePart = topic.createdAt.toLocaleDateString("en-US", dateOpts);
    const timePart = topic.createdAt.toLocaleTimeString("en-US", timeOpts);
    // 转成普通对象才能添加新属性
    return { ...topic.toObject(), formattedTime: `${datePart} ${timePart}` };
  });

  res.render("index", { list_topic: formattedTopics });
});

然后在EJS模板里直接使用预生成的字段:

<td>
  <span>
    <%= topic.formattedTime %>
  </span>
</td>

方案B:模板内直接拼接

不想修改后端的话,也可以在EJS里直接拆分生成:

<td>
  <span>
    <%= `${topic.createdAt.toLocaleDateString("en-US", {month: "numeric", day: "numeric"})} ${topic.createdAt.toLocaleTimeString("en-US", {hour: "numeric", minute: "2-digit"})}` %>
  </span>
</td>

你之前拆分时出现EJS错误,大概率是模板语法问题(比如变量未定义、括号不匹配),上面的写法都是标准EJS语法,不会有类似问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 06:22:29