我需要在今年的同一天.
示例:现在是2019年,变量包含值2022年7月15日,所以我需要在2019年7月15日到达.它适用于所有日期,除了2月份,它在一年中有额外的一天,今年没有这一天,例如:2020年2月29日将在第二天返回我:2019年3月1日,但在这种情况下我需要返回前一天:2019年2月28日.我如何调整逻辑以使其以这种方式工作?
public static java.util.Date getThisDateInThisYear(java.util.Date date) { GregorianCalendar gc = new GregorianCalendar(); gc.setTime(date); Date today = new Date(); GregorianCalendar gcToday = new GregorianCalendar(); gcToday.setTime(today); gc.set(GregorianCalendar.YEAR,gcToday.get(GregorianCalendar.YEAR)); return gc.getTime(); }
解决方法
首先计算年份的差异并将结果添加到日期
public Date getThisDateInThisYear(Date date) { Calendar c = Calendar.getInstance(); int thisYear = c.get(Calendar.YEAR) c.setTime(date); int diff = thisYear - c.get(Calendar.YEAR); c.add(Calendar.YEAR,diff); return c.getTime(); }
我测试了2016-02-29和2020-02-29,两者都返回2019-02-28.