迹忆客 专注技术分享

当前位置:主页 > 学无止境 > WEB前端 > JavaScript >

Date.getDay() 在 JavaScript 中返回错误的日期

作者:迹忆客 最近更新:2023/01/19 浏览次数:

使用 getDate() 方法而不是 getDay() 来获取一个月中某天的正确值,例如 date.getDate()

getDate 方法返回一个介于 1 和 31 之间的数字,表示给定日期是一个月中的第几天。

const date = new Date('2022-04-24');

console.log(date); // 👉️ Sun Apr 24 2022

const dayOfMonth = date.getDate();
console.log(dayOfMonth); // 👉️ 24

我们使用 Date() 构造函数创建了一个日期,用于存储 2022 年 4 月 24 日的值。

getDate() 方法返回存储在特定 Date 对象中的月份中的第几天。

该方法经常与 getDay() 混淆。

getDay 方法返回一个介于 0 和 6 之间的数字,它对应于给定日期的星期几。

例如,0 是星期日,1 是星期一,2 是星期二,等等。

const date = new Date('2022-04-24');

console.log(date); // 👉️ Sun Apr 24 2022

// ❌ getDay = zero-based  day of week
const dayOfWeek = date.getDay();
console.log(dayOfWeek); // 👉️ 0

另一个令人困惑的与日期相关的方法是 getMonth()

该方法为给定日期的月份返回一个从零开始的数字,其中 0 是一月,1 是二月,2 是三月,等等。

下面是一个将日期格式化为 YYYY-MM-DD 的示例。

function padTo2Digits(num) {
  return num.toString().padStart(2, '0');
}

function formatDate(date) {
  return [
    date.getFullYear(),
    padTo2Digits(date.getMonth() + 1),
    padTo2Digits(date.getDate()),
  ].join('-');
}

const date = new Date('2022-04-24');

// 👇️ 2022-04-24 (yyyy-mm-dd)
console.log(formatDate(date));

//  👇️️ 2025-05-09 (yyyy-mm-dd)
console.log(formatDate(new Date(2025, 4, 9)));

我们做的第一件事是创建一个 padTo2Digits 函数,如果月份或日期仅包含一位数字(小于 10),它将负责添加前导零。

function padTo2Digits(num) {
  return num.toString().padStart(2, '0');
}

console.log(padTo2Digits(3)); // 👉️ '03'
console.log(padTo2Digits(6)); // 👉️ '06'
console.log(padTo2Digits(10)); // 👉️ '10'

我们要确保结果始终一致并且月份和日期为 2 位数字,因此我们使用了 padStart 方法。

我们传递给 padTo2Digits 函数的第一个参数是字符串的总长度,因此如果日期或月份已经有 2 位数字,它就不会填充它们。

接下来,我们创建了一个接受日期并将其格式化为 yyyy-mm-dd 的函数。

该函数使用以下 3 个与日期相关的方法。

  • Date.getFullYear 方法 - 返回代表与日期对应的年份的四位数字。
  • Date.getMonth - 返回一个介于 0(一月)和 11(十二月)之间的整数,代表给定日期的月份。 是的,不幸的是,getMonth 方法关闭了 1。
  • Date.getDate - 返回一个介于 1 和 31 之间的整数,表示特定日期的月份中的第几天。

getMonth 方法返回一个从零开始的月份索引,从 0 到 11,这意味着一月是 0,十二月是 11。

因为 getMonth 方法是从零开始的,所以我们将 1 添加到它的返回值。

最后一步是将对方法的调用放在一个数组中,这样我们就可以用连字符分隔符连接它们。 这里有些例子。

console.log(['2022', '04', '24'].join('-')); // 👉️ '2022-04-24'
console.log(['2024', '09', '15'].join('-')); // 👉️ '2024-09-15'

我们在示例中使用了连字符分隔符,但是,我们可以使用正斜杠 /、重新排序值或进行任何其他更改。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便