获取几年前的今天的日期 YY--MM--DD格式,获取某日期前后多少天

本文介绍两种实用的日期操作方法:一是获取几年前或几年后的具体日期,二是计算任意日期的前后若干天。通过JavaScript函数实现,帮助开发者快速进行日期计算。

最近遇到了个问题,就是想要得到的今天的前几天,后几天,今天前几年,后几年。

既然不能确定想要得到今年之前之后的日期,又不能确定是几年,还是几天。那我们就做两个方法,一个方法为算出今年前后的某一年,另一个方法算出这年的前几天。下面简单介绍一下这两个方法
1.年

function getLastYearYestdy(num){ 
      var date = new Date();
           var strYear = date.getFullYear() - num;    
           var strDay = date.getDate();    
           var strMonth = date.getMonth()+1;  
           if(strMonth<10)    
           {    
              strMonth='0'+strMonth;    
           }  
           if(strDay<10)    
           {    
              strDay='0'+strDay;    
           }  
           var datastr = strYear+'-'+strMonth+'-'+strDay;  
           return datastr;  
        }

这个方法中的num参数表示你想要的到的几年前的今天的日期,如果想要的到几年后的日期,num传入负数 即可。
2.天

 function getDateStr(days,AddDayCount) {
          var dd = new Date(days);
          dd.setDate(dd.getDate()+AddDayCount);//获取AddDayCount天后的日期
          var y = dd.getFullYear();
          var m = dd.getMonth()+1;//获取当前月份的日期
          var d = dd.getDate();
          return y+'-'+(m<10?'0'+m:m)+'-'+(d<10?'0'+d:d);
    }

这个方法中的days参数表示的是你需要传入的日期,AddDayCount参数表示你想的到这个日期的前后某天。AddDayCount参数为 ‘1’表示这个日期后的一天的日期,如果为‘-1’表示这个日期前一天的日期。

当然如果你的需求既有年又有天就可以将getLastYearYestdy(num)变为getDateStr方法的第一个参数即可。

<think>我们使用Java中的java.time包(Java 8及以上)来处理日期,因为它是线程安全且更易用的。 步骤: 1. 获取当前日期(LocalDate.now()) 2. 减去一(使用minusDays(1)方法) 3. 格式化为"yyyy-MM-dd"(使用DateTimeFormatter) 注意:避免使用SimpleDateFormat,因为它是线程不安全的。而java.time包下的类都是不可变且线程安全的。 代码示例:</think>### Java 获取前一日期格式化为 yyyy-MM-dd 在 Java 中获取前一日期格式化为 `yyyy-MM-dd`,推荐使用 **java.time 包(Java 8+)**,这是线程安全且更简洁的方式: #### 方法 1:使用 `LocalDate`(推荐) ```java import java.time.LocalDate; import java.time.format.DateTimeFormatter; public class Main { public static void main(String[] args) { // 获取当前日期 LocalDate today = LocalDate.now(); // 计算前一 LocalDate yesterday = today.minusDays(1); // 格式化为 yyyy-MM-dd String formattedDate = yesterday.format(DateTimeFormatter.ISO_LOCAL_DATE); System.out.println("前一日期: " + formattedDate); } } ``` **输出示例** `前一日期: 2023-10-25` #### 方法 2:使用 `Calendar`(旧版 Java) ```java import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class Main { public static void main(String[] args) { // 获取 Calendar 实例 Calendar calendar = Calendar.getInstance(); // 日期减 1 calendar.add(Calendar.DATE, -1); // 转换为 Date 对象 Date yesterday = calendar.getTime(); // 格式化为 yyyy-MM-dd SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String formattedDate = sdf.format(yesterday); System.out.println("前一日期: " + formattedDate); } } ``` #### 关键说明 1. **格式规范** - 使用 `yyyy` 表示年份(如 `2023`),**避免用 `YYYY`**(表示“周年”而非年份)[^3]。 - 使用 `MM` 表示月份(如 `10`),`dd` 表示日期(如 `25`)。 2. **线程安全** - `SimpleDateFormat` 非线程安全(需避免多线程共享)[^2]。 - `java.time` 包(如 `DateTimeFormatter`)是线程安全的推荐方案[^2]。 3. **时区处理** 若需指定时区,可在 `LocalDate.now()` 添加时区参数: ```java LocalDate.now(ZoneId.of("Asia/Shanghai")); ``` #### 常见错误规避 - 错误格式:`YYYY-MM-DD` → 正确:`yyyy-MM-dd`(`DD` 表示“一年中的第几天”,非日期)[^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lbchenxy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值