O poço do calendário de véspera de ano novo em Java

Código acima:

    public static void main(String[] args) throws Exception{
    
    

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");

        Calendar calendar = Calendar.getInstance();

        calendar.setTime(simpleDateFormat.parse("2021-08"));

        calendar.roll(Calendar.MONTH, -5);

        String date = simpleDateFormat.format(calendar.getTime());

        System.out.println("-------------" + date + "-------------");
    }

resultado da operação

-------------2021-03-------------

Percebe-se que a data obtida subtraindo 5 meses não tem problema, mas há problema ao subtrair mais de um ano e depois tentar subtrair 20 meses

    public static void main(String[] args) throws Exception{
    
    

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");

        Calendar calendar = Calendar.getInstance();

        calendar.setTime(simpleDateFormat.parse("2021-08"));

        calendar.roll(Calendar.MONTH, -20);

        String date = simpleDateFormat.format(calendar.getTime());
        
        System.out.println("-------------" + date + "-------------");
    }

resultado da operação

-------------2021-12-------------

A data está errada, a data correta deveria ser: 2019-12

Solução: substitua o método roll por add, o método roll só pode ser calculado no ano atual e o método add pode ser calculado ao longo dos anos

    public static void main(String[] args) throws Exception {
    
    

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");

        Calendar calendar = Calendar.getInstance();

        calendar.setTime(simpleDateFormat.parse("2021-08"));

        calendar.add(Calendar.MONTH, -20);

        String date = simpleDateFormat.format(calendar.getTime());

        System.out.println("-------------" + date + "-------------");
    }

resultado da operação

-------------2019-12-------------

Acho que você gosta

Origin blog.csdn.net/qq_39486119/article/details/119653514
Recomendado
Clasificación