Java日历:减去两个日期,得到两个日期之间的天数差

Java日历:减去两个日期,得到两个日期之间的天数差,java,Java,我想检查我的用户登录后的天数: Calendar lastLogin = Calendar.getInstance(); lastLogin.setTime(randomPlayer.getLastLogin()); Calendar today = Calendar.getInstance(); 我如何减去这个来得到两者之间的天数差?即自上次登录后的天数 我建议改用: 或者,如果您真的想坚持使用日历: 您使用的java版本是什么?版本8+,通常情况下,强烈建议不要再使用Calendar和Da

我想检查我的用户登录后的天数:

Calendar lastLogin = Calendar.getInstance();
lastLogin.setTime(randomPlayer.getLastLogin());
Calendar today = Calendar.getInstance();
我如何减去这个来得到两者之间的天数差?即自上次登录后的天数

我建议改用:

或者,如果您真的想坚持使用日历:


您使用的java版本是什么?版本8+,通常情况下,强烈建议不要再使用Calendar和Date类。如果您使用的是Java8,请使用Java.time。如果您使用的是早期版本,请使用Joda Time。Calendar和Date是非常粗糙、低效的类;然后使用period.getDays获取对您有帮助的Day
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

public class DaysBetween {

    public static void main(String[] args) {
        LocalDate lastLogin = LocalDate.of(2017, 4, 1);
        LocalDate today = LocalDate.now();
        System.out.println(daysBetween(lastLogin, today));
    }

    private static long daysBetween(LocalDate from, LocalDate to) {
        return ChronoUnit.DAYS.between(from, to);
    }
}
import java.time.temporal.ChronoUnit;
import java.util.Calendar;

public class DaysBetween {

    public static void main(String[] args) {
        Calendar lastLogin = Calendar.getInstance();
        lastLogin.set(Calendar.YEAR, 2017);
        lastLogin.set(Calendar.MONTH, 3);
        lastLogin.set(Calendar.DAY_OF_MONTH, 1);
        Calendar today = Calendar.getInstance();
        System.out.println(daysBetween(lastLogin, today));
    }

    private static long daysBetween(Calendar from, Calendar to) {
        return ChronoUnit.DAYS.between(from.toInstant(), to.toInstant());
    }
}