從 txt 文件讀取 8 位日期(yyyyMMdd),打印從該日期起 30 天的日歷信息。
import java.io.*;
import java.text.*;
import java.util.*;
public class DateCalendar {
public static void main(String[] args) {
printNextMonth("src/date.txt");
}
public static void printNextMonth(String filePath) {
String content = readFile(filePath, "UTF-8");
if (content == null || content.length() < 8) {
System.out.println("日期格式錯誤,需為 yyyyMMdd");
return;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Calendar cal = Calendar.getInstance();
try {
Date startDate = sdf.parse(content.trim());
cal.setTime(startDate);
System.out.println("起始日期: " + startDate);
for (int i = 0; i < 30; i++) {
cal.add(Calendar.DATE, 1);
System.out.println(sdf.format(cal.getTime()));
}
} catch (ParseException e) {
System.err.println("日期解析失敗: " + e.getMessage());
}
}
public static String readFile(String fileName, String charset) {
if (fileName == null || fileName.isEmpty()) return "";
if (charset == null || charset.isEmpty()) charset = "UTF-8";
StringBuilder sb = new StringBuilder();
try (BufferedReader br = new BufferedReader(
new InputStreamReader(new FileInputStream(fileName), charset))) {
String line;
while ((line = br.readLine()) != null) {
sb.append(line.trim());
}
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
}
Calendar.add(Calendar.DATE, 1) 正確處理月份/年份跨越SimpleDateFormat 自定義文件 src/date.txt 內容:20160310