之前项目中需要在T+1天,获取T天支付账单,首先第一时间想到Calendar代码如下:
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.roll(Calendar.DAY_OF_YEAR, -1);
Date prevDay = calendar.getTime();
System.out.println(sdf.format(prevDay));
}
之后的测试中发现,当跨年时,会出现一点小小的尴尬
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
Date day = sdf.parse("2021-01-01");
calendar.setTime(day);
calendar.roll(Calendar.DAY_OF_YEAR, -1);
Date prevDay = calendar.getTime();
System.out.println(sdf.format(prevDay));
}
执行结果: 2021-12-31
后来回归原始,就硬写想到了下面的方法
public static String getYesterday(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
long ms = System.currentTimeMillis() - 1*24*3600*1000L;
Date prevDay = new Date(ms);
return sdf.format(prevDay);
}
记录一下,自己的踩坑之路,以后关于日期的操作都会回来记录,也欢迎各位指点。
Stay hungry,Stay foolish