【问题标题】:Get Date in Consistent Format以一致的格式获取日期
【发布时间】:2021-12-30 12:27:31
【问题描述】:

我有一个函数可以根据某些条件(过去 30 天)返回日期。

const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
const startTime = start.toLocaleString().split(",")[0];
console.log(startTime)

在 Mac OS 中,我得到 dd/mm/yyyy 格式的输出(这是所需的格式)。

但在 Windows 中,我得到了 mm/dd/yyyy 格式的输出。无论平台如何,我怎样才能使其保持一致。所需格式为 dd/mm/yyy

【问题讨论】:

    标签: javascript reactjs date


    【解决方案1】:

    使用toLocaleDateString with locale

    en-GB 语言环境似乎是你想要的

    我做了一个更有用和自我描述的函数

    const ddmmyyyy = (d, offset) => {
      d.setTime(d.getTime() + (3600 * 1000 * 24 * offset))
      return d.toLocaleDateString('en-GB')
    };
    
    console.log(
      ddmmyyyy(new Date(), -30)
    )

    【讨论】:

    • 'en-GB' 是一种语言,而不是语言环境。这让我感到困惑,为什么 ECMA-402 的作者指定了一个 BCP47 语言代码的参数值,但却设法将其错误命名为“语言环境”。甚至介绍都说“[ECMA-402] 提供了关键的语言敏感功能……”。 :-)
    【解决方案2】:

    toLocaleDateString 与“en-GB”一起使用

    const start = new Date();
    start.setDate(start.getDate() - 30)
    const startTime = start.toLocaleDateString('en-GB');
    console.log(startTime)

    【讨论】:

      【解决方案3】:

      function SetShortDateTime(d) {
        const monthList = [
          "01",
          "02",
          "03",
          "04",
          "05",
          "06",
          "07",
          "08",
          "09",
          "10",
          "11",
          "12"
        ];
      
      
        const yr = d.getFullYear();
        const mnt = monthList[d.getMonth()];
        const day = d.getDate() < 10 ? "0" + d.getDate() : d.getDate();
      
        return [day, mnt, yr].join("/");
      }
      
      console.log(SetShortDateTime(new Date(2021,11,9,10)))

      【讨论】:

      • 我修复了你的填充。但是为什么不在一天和一个月都使用 padStart 呢?然后就做mnt = d.getMonth()+1;
      • 或者只是做我们所做的。 start.toLocaleDateString('en-GB'); 会做所有这些
      猜你喜欢
      • 1970-01-01
      • 2015-01-27
      • 1970-01-01
      • 2020-08-24
      • 1970-01-01
      • 1970-01-01
      • 2011-06-23
      • 2013-08-17
      • 2018-04-24
      相关资源
      最近更新 更多