如何使用Java代码结合时区生成未来/过去日期?
Java生成未来/过去日期的实现方法
以下代码可实现生成未来日期,若要生成过去日期,只需将代码中的plusXXX系列方法替换为minusXXX系列方法即可。
public String yearCalculation() { String DATE_FORMAT = "MM/dd/yyyy"; DateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT); DateTimeFormatter dateFormat8 = DateTimeFormatter.ofPattern(DATE_FORMAT); // 获取当前日期 Date currentDate = new Date(); System.out.println("date : " + dateFormat.format(currentDate)); // 将Date转换为LocalDateTime LocalDateTime localDateTime = currentDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); System.out.println("localDateTime : " + dateFormat8.format(localDateTime)); // 增加一年(若要生成过去日期,替换为minusYears(1)即可) localDateTime = localDateTime.plusYears(1).plusMonths(0).plusDays(0); // 将LocalDateTime转换为Date Date pluseYear = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); String strDate = dateFormat.format(pluseYear); System.out.println("\n Output of New Date : " + dateFormat.format(pluseYear)); return strDate; }
代码说明:
- 同时使用旧版
SimpleDateFormat和新版DateTimeFormatter做日期格式化,适配不同日期类型 - 通过
Instant和时区ZoneId完成Date与LocalDateTime的互相转换,实现新旧日期API的衔接 - 调用
plusYears(1)实现日期加1年,plusMonths、plusDays可分别调整月份和天数;替换为minusYears、minusMonths、minusDays即可生成对应的过去日期
内容的提问来源于stack exchange,提问作者praveen Geetha
相关产品推荐
相关产品推荐

