Java获取指定日期前一天后一天方法

1,210 阅读1分钟

之前项目中需要在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