許多初學者會硬編碼年份(如 int year = 2016;),導致程式跨年失效。正確做法是動態獲取系統時間。
import java.util.Calendar;
import java.text.SimpleDateFormat;
public class CurrentYear {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
String year = sdf.format(cal.getTime());
System.out.println("當前年份: " + year); // 輸出如 2024
}
}
關鍵點:Calendar.getInstance() 返回當前時區的日曆實例;getTime() 取得 Date 對象;SimpleDateFormat("yyyy") 只格式化年份。
import java.time.LocalDate;
import java.time.Year;
public class CurrentYearJava8 {
public static void main(String[] args) {
int year = LocalDate.now().getYear(); // 或 Year.now().getValue()
System.out.println("當前年份: " + year);
}
}
優勢:不可變、線程安全、API 直觀、無需格式化字符串解析。
int year = 2016; 明年即失效。cal.get(Calendar.YEAR) 才是正確取年份,cal.get(Calendar.YEAR) 返回 1(常量值),而 Calendar.YEAR 常量值為 1,易混淆。ThreadLocal 或 Java 8 API。採用動態獲取年份,程式即可長期正常運行無需維護。