我需要在Java中确定当前年份为整数。我可以只使用java.util.Date(),但已弃用。


当前回答

你也可以使用Java 8的LocalDate:

import java.time.LocalDate;
//...
int year = LocalDate.now().getYear();

其他回答

使用Java 8的时间API(假设你很高兴得到系统默认时区中的年份),你可以使用year::now方法:

int year = Year.now().getValue();

在Java版本8+可以(建议)使用Java。图书馆的时间。ISO 8601设置了写入日期的标准方式:YYYY-MM-DD和java.time.Instant使用它,因此(对于UTC):

import java.time.Instant;
int myYear = Integer.parseInt(Instant.now().toString().substring(0,4));

附注:以防万一(是获取字符串的缩写,不是int),使用Calendar看起来更好,并且可以使其具有区域感知。

如果你想要任何日期对象的年份,我使用以下方法:

public static int getYearFromDate(Date date) {
    int result = -1;
    if (date != null) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        result = cal.get(Calendar.YEAR);
    }
    return result;
}

你可以使用Integer数学来完成整个事情,而不需要实例化一个日历:

return (System.currentTimeMillis()/1000/3600/24/365.25 +1970);

新年的时候可能会休息一两个小时,但我不觉得这是个问题?

你也可以使用java.time中的2个方法。年月(自Java 8起):

import java.time.YearMonth;
...
int year = YearMonth.now().getYear();
int month = YearMonth.now().getMonthValue();