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

React.js项目中如何按指定格式显示昨日日期?

解决React.js中昨日日期展示的TypeError问题

出现Uncaught TypeError: yesterday.toLocaleDateString is not a function错误,本质是你定义的yesterday不是合法的Date对象——大概率是创建昨日日期时直接对Date实例做了减法运算,得到的是时间戳(数字类型),而数字没有toLocaleDateString方法。

以下是正确的实现方案,可直接生成「6 June、5 June」格式的日期:

  1. 正确创建昨日日期对象
    基于今日的Date对象复制一份,再通过setDate方法将日期减1,这样得到的仍是合法的Date实例:

    const today = new Date();
    const yesterday = new Date(today);
    yesterday.setDate(today.getDate() - 1);
    
  2. 格式化日期为指定格式
    使用toLocaleDateString方法,传入'en-GB'语言标识和格式化配置,即可得到「数字 + 英文月份全称」的格式:

    const formatDate = (date) => {
      return date.toLocaleDateString('en-GB', {
        day: 'numeric',
        month: 'long'
      });
    };
    
  3. 完整React组件示例

    import React from 'react';
    
    const DateComponent = () => {
      const today = new Date();
      const yesterday = new Date(today);
      yesterday.setDate(today.getDate() - 1);
    
      const formatDate = (date) => {
        return date.toLocaleDateString('en-GB', {
          day: 'numeric',
          month: 'long'
        });
      };
    
      return (
        <div>
          <span>{formatDate(today)}、{formatDate(yesterday)}</span>
        </div>
      );
    };
    
    export default DateComponent;
    

注意事项

  • 避免直接对Date实例做减法(比如const yesterday = new Date() - 86400000),这种写法会得到数字类型的时间戳,无法调用Date对象的方法。
  • setDate方法会自动处理跨月/跨年的边界情况(比如1月1日的前一天会自动转为去年12月31日),无需额外编写逻辑处理。

内容的提问来源于stack exchange,提问作者Александр

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 17:55:00