上一篇                     
               
			  Java如何输出当前年份
- 后端开发
- 2025-06-22
- 2490
 在Java中获取当前年份,可使用
 
 
java.util.Calendar或
 java.time.Year(Java 8+),示例: ,“
 java,import java.time.Year; // Java 8+,public class Main {, public static void main(String[] args) {, System.out.println(Year.now().getValue()); // 直接输出当前年份, },},`
  ,或使用传统方式: ,`
 java,import java.util.Calendar;,public class Main {, public static void main(String[] args) {, System.out.println(Calendar.getInstance().get(Calendar.YEAR));, },},`
  ,两种方法均能正确输出当前年份(如2025),推荐Java 8及以上使用Year.now()`更简洁。
在Java中获取并输出当前年份有多种方法,具体取决于使用的Java版本和API,以下是详细解决方案:
方法1:使用 java.time.Year(推荐,Java 8+)
 
import java.time.Year;
public class Main {
    public static void main(String[] args) {
        int currentYear = Year.now().getValue(); // 直接获取年份
        System.out.println("当前年份: " + currentYear);
    }
} 
优点:
- 简洁高效:专为日期设计,代码直观。
- 线程安全:java.time包下的类均不可变。
- 官方推荐:Oracle 建议用新日期API替代旧版。
方法2:使用 java.time.LocalDate(Java 8+)
 
import java.time.LocalDate;
public class Main {
    public static void main(String[] args) {
        int year = LocalDate.now().getYear(); // 从当前日期提取年份
        System.out.println("当前年份: " + year);
    }
} 
适用场景:需同时处理日期(如月、日)时更灵活。

方法3:使用 java.util.Calendar(旧版Java)
 
import java.util.Calendar;
public class Main {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR); // 从日历对象获取年份
        System.out.println("当前年份: " + year);
    }
} 
注意:
- 适用于Java 7及以下,但已过时。
- 需注意 Calendar的月份从0开始(年份无此问题)。
方法4:使用 java.util.Date(不推荐,仅作了解)
 
import java.util.Date;
public class Main {
    public static void main(String[] args) {
        Date date = new Date();
        int year = date.getYear() + 1900; // 需手动+1900(设计缺陷)
        System.out.println("当前年份: " + year);
    }
} 
缺点:

- getYear()返回1900年后的偏移值,需手动校正。
- Date类大部分方法已弃用。
最佳实践总结
| 方法 | 推荐度 | 场景 | 
|---|---|---|
| Year.now().getValue() | Java 8+,仅需年份 | |
| LocalDate.now().getYear() | Java 8+,需完整日期 | |
| Calendar.getInstance() | 旧项目(Java ≤7) | |
| Date.getYear() | 不推荐,仅作历史了解 | 
关键建议:
- 优先使用 java.time包(Java 8+),符合现代编码标准。
- 避免过时的 Date和Calendar类,除非维护旧系统。
- 若需时区控制,用 Year.now(ZoneId.of("Asia/Shanghai"))指定时区。
常见问题
Q:为什么 Date.getYear() 返回122(实际2022年)?
A:Date 设计缺陷,年份=返回值+1900,应避免使用。

Q:如何输出两位数年份(如23代表2025)?
A:对新API结果取模: 
int shortYear = Year.now().getValue() % 100; // 输出 24(2025年)
引用说明基于 Oracle官方Java文档 和 Java日期时间教程。
java.time包由JSR 310规范定义,是Java处理日期时间的现代标准解决方案。
 
  
			 
			 
			 
			 
			 
			 
			 
			