JS获取昨天,前天,明天,后天的日期

本文介绍了一个实用的JavaScript函数,该函数可以根据输入的数值获取过去指定天数的日期,并以自定义格式返回。例如,获取昨天、前天等日期,便于前端开发人员快速处理日期相关的业务需求。

最近在做一个项目,我这里要把昨天/前天/大前天的日期传给后台,后台根据传过去的值而返回数据,用于展示一些内容。于是便封装了如下用js获取日期的方法。

代码如下:

function getDay(num, str) {
    var today = new Date();
    var nowTime = today.getTime();
    var ms = 24*3600*1000*num;
    today.setTime(parseInt(nowTime + ms));
    var oYear = today.getFullYear();
    var oMoth = (today.getMonth() + 1).toString();
    if (oMoth.length <= 1) oMoth = '0' + oMoth;
    var oDay = today.getDate().toString();
    if (oDay.length <= 1) oDay = '0' + oDay;
    return oYear + str + oMoth + str + oDay;
}

如果要获取昨天的日期,num就是-1, 前天的就是-2,依次类推。str表示年月日间的分割方式。

比如我要得到昨天的日期,用短横线‘-’连接。

var yesterday = getDay(-1, '-');
console.log(yesterday);

控制台输出结果:

2017-08-08

<think>嗯,用户想知道如何用JavaScript获取明天日期。让我先回忆一下相关知识。JavaScript中的Date对象可以处理日期和时间。要得到明天日期,通常的做法是获取当前日期,然后把天数加1。不过,直接修改日期对象可能会有些问题,比如跨月或跨年的时候。 比如,用户可能用new Date()获取当前日期,然后用setDate方法加上1。例如: let today = new Date(); today.setDate(today.getDate() + 1); 这样,today就变成了明天日期。不过,这样做会修改原始日期对象,如果需要保留今天的日期,可能需要先复制一个对象。比如: let tomorrow = new Date(); tomorrow.setDate(tomorrow.getDate() + 1); 这样就不会影响原来的日期对象了。 另外,用户提到的引用中,引用3和4提到了类似的方法。比如引用3中的代码使用一个工具函数,传入0是今天,1是明天,-1是昨天。而引用4中的代码也是通过调整日期的天数来获取昨天明天日期。这说明用户提供的参考资料里已经有相关的实现方法,可能需要参考这些示例。 不过,处理日期的时候要注意时区问题。JavaScriptDate对象使用的是本地时间还是UTC时间?比如,如果用户所在时区有夏令时变化,是否会影响结果?不过一般情况下,直接操作日期的天数应该是安全的,因为setDate会自动处理跨月的情况,比如当今天是31号的时候,加1天会自动变成下个月的1号。 另外,用户可能需要将日期格式化为字符串,比如YYYY-MM-DD的形式。这时候需要用getFullYear()、getMonth()+1(因为月份从0开始)、getDate()来获取各部分,然后拼接起来。例如: function getTomorrow() { let date = new Date(); date.setDate(date.getDate() + 1); return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`; } 这样就能得到类似"2023-10-05"的字符串了。padStart方法可以补零,确保月份和日期是两位数。 另外,用户可能还关心如何处理边缘情况,比如当今天是某个月的最后一天时,加1天是否会正确跳到下个月的第一天。根据Date对象的行为,确实会的,所以这个方法应该是可靠的。 总结下来,步骤应该是: 1. 创建当前日期Date对象。 2. 使用setDate方法将天数加1。 3. 格式化新的日期为所需的字符串格式。 同时,考虑到用户提供的引用中的示例,可以引用相关的参考资料来支持这个方法的正确性,比如引用3和引用4中的方法。</think>### 如何用JavaScript获取明天日期? #### 方法1:通过`Date`对象直接修改天数 JavaScript的`Date`对象支持通过`setDate()`动态调整日期。步骤如下: 1. 创建当前日期对象:`let date = new Date();` 2. 将天数加1:`date.setDate(date.getDate() + 1);` 3. 格式化输出结果(例如`YYYY-MM-DD`)。 示例代码: ```javascript let today = new Date(); let tomorrow = new Date(today); // 复制对象避免修改原日期 tomorrow.setDate(tomorrow.getDate() + 1); console.log(tomorrow.toISOString().split('T')[0]); // 输出格式如"2023-10-05" ``` #### 方法2:封装工具函数(参考引用[^3]) 若需重复使用,可封装一个通用函数: ```javascript function getNextDate(daysOffset) { let date = new Date(); date.setDate(date.getDate() + daysOffset); return date; } // 调用:getNextDate(1) 获取明天日期 ``` #### 注意事项 1. **跨月/跨年自动处理**:`setDate()`会自动处理月末、年末(例如31日+1天变为下月1日)[^4]。 2. **时区问题**:`Date`对象基于本地时区,若需UTC时间需用`getUTC`系列方法[^1]。 3. **格式化补零**:月份和日期需补零(如`1月`显示为`01`): ```javascript let formattedDate = `${tomorrow.getFullYear()}-${String(tomorrow.getMonth() + 1).padStart(2, '0')}-${String(tomorrow.getDate()).padStart(2, '0')}`; ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值