首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 讀取文件日期並打印未來一個月日歷完整代碼

     編輯:程式設計疑難解答

需求分析

從 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) 正確處理月份/年份跨越
  • 文件讀取使用 try-with-resources 自動關閉流
  • 異常處理覆蓋文件不存在、編碼錯誤、日期格式錯誤
  • 輸出格式可通過 SimpleDateFormat 自定義

測試數據

文件 src/date.txt 內容:20160310

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved