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

JavaScript中使用Date函数移除日期时间及获取当年双休日的问题

嘿,我来帮你搞定这两个JavaScript日期处理的问题~

问题一:在JavaScript中使用Date函数转换日期时,移除当前时间部分

要移除Date对象的时间部分,核心是把时、分、秒、毫秒都重置为0,这里有几种实用的方法:

  • 方法一:直接设置时分秒为0
    这是最直接的方式,直接修改原Date对象的时间部分:

    const today = new Date();
    // 依次设置时、分、秒、毫秒为0
    today.setHours(0, 0, 0, 0);
    console.log(today); // 输出类似:2024-05-20T00:00:00.000Z(时区不同可能略有差异)
    
  • 方法二:通过日期字符串重构
    利用toDateString()获取不含时间的日期字符串,再转回Date对象:

    const today = new Date();
    const dateOnly = new Date(today.toDateString());
    console.log(dateOnly); // 同样得到当天0点的Date对象
    

    toDateString()会返回类似"Mon May 20 2024"的纯日期字符串,转成Date后自动把时间设为0。

  • 方法三:ISO字符串截取(适合UTC场景)
    如果需要UTC时区的纯日期,可以这么做:

    const today = new Date();
    const utcDateOnly = new Date(today.toISOString().split('T')[0]);
    console.log(utcDateOnly); // UTC时区的当天0点日期
    

    toISOString()返回格式如"2024-05-20T12:34:56.789Z",截取T之前的部分就是纯日期,再转成Date即可。

问题二:获取当年所有周六和周日的代码修复

先帮你排查原代码里的几个关键问题:

  1. 月份参数错误:JavaScript的Date月份是0-based(0代表1月,11代表12月),你写的y.setFullYear(currentyear, 12, 31)会直接跳到下一年1月31日;另外x.setFullYear(currentyear, 00, 00)里的日期00会被解析为上一年12月31日,要改成01才是当年1月1日。
  2. 循环逻辑错误:原循环用i += j但没修改x的日期,会导致死循环,应该每次给x加1天。
  3. 判断条件偏差:你注释写的是获取周一,但实际要的是周六(getDay()返回6)和周日(返回0),判断条件需要调整。

修复后的完整代码如下:

const x = new Date();
const currentYear = x.getFullYear();
// 设置起始日期为当年1月1日
x.setFullYear(currentYear, 0, 1);
// 设置结束日期为当年12月31日
const y = new Date(currentYear, 11, 31);

const allWeekends = [];

// 遍历当年每一天
while (x <= y) {
  const dayOfWeek = x.getDay();
  // 匹配周六(6)或周日(0)
  if (dayOfWeek === 0 || dayOfWeek === 6) {
    // 存Date对象的副本,避免后续修改影响数组内的日期
    allWeekends.push(new Date(x));
    // 也可以直接存格式化后的字符串:allWeekends.push(x.toLocaleDateString());
  }
  // 日期加1天,继续下一轮循环
  x.setDate(x.getDate() + 1);
}

console.log("当年所有周末日期:", allWeekends);

补充说明:

  • 用while循环替代原for循环,更直观判断日期是否在当年范围内;
  • 每次循环给x加1天,确保遍历到全年所有日期;
  • 存储Date对象时用new Date(x)创建副本,因为setDate会修改原对象,避免数组里的所有元素最后变成同一个日期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:20:28