首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 計算指定日期是當年的第幾天

     編輯:Java 相關知識

年度第幾天計算器

輸入年、月、日,輸出該日期是當年的第幾天。需處理閏年 2 月 29 日情況。

核心邏輯

  1. 預先定義每月累積天數陣列(平年)。
  2. 累加輸入月份之前的總天數。
  3. 加上輸入的日期。
  4. 若為閏年且月份 > 2,總天數 +1。

完整程式碼

import java.util.Scanner;

public class DayOfYear {
    private static final int[] MONTH_DAYS = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}; // 1-base 索引對應月份前累積天數

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("請輸入 年 月 日(空白分隔):");
        int year = sc.nextInt();
        int month = sc.nextInt();
        int day = sc.nextInt();

        if (month < 1 || month > 12 || day < 1 || day > 31) {
            System.out.println("日期錯誤");
            return;
        }

        int dayOfYear = MONTH_DAYS[month - 1] + day;

        // 閏年判斷:能被 400 整除,或被 4 整除但不被 100 整除
        boolean isLeap = (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);
        if (isLeap && month > 2) {
            dayOfYear++;
        }

        System.out.println("這是當年的第 " + dayOfYear + " 天");
    }
}

進階:使用 Java 8 Time API

import java.time.LocalDate;
import java.time.temporal.ChronoField;

public class DayOfYearModern {
    public static void main(String[] args) {
        LocalDate date = LocalDate.of(2024, 3, 1);
        int dayOfYear = date.get(ChronoField.DAY_OF_YEAR);
        System.out.println(dayOfYear); // 61 (閏年)
    }
}

java.time 內建處理閏年、月份長度、時區等複雜細節,生產環境首選。

常見錯誤提醒

  • 忘記閏年修正導致 3 月後日期偏差 1 天。
  • 陣列索引離一錯誤(off-by-one):月份 1 對應索引 0。
  • 未驗證日期合法性(如 2 月 30 日)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved