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

Java 日期時間操作完整工具類:JSPCalendar

     編輯:Java 相關知識

前言

專案中常需處理日期、時間、時區等資訊。本文提供一個功能完整的 JSPCalendar 類別,封裝 java.util.Calendar 與 java.text.DateFormat,可直接取得年、月、日、星期、時區、夏令時間等資訊。

類別原始碼

import java.text.DateFormat;
import java.util.*;

public class JSPCalendar {
    Calendar calendar = null;

    public JSPCalendar() {
        calendar = Calendar.getInstance();
        Date trialTime = new Date();
        calendar.setTime(trialTime);
    }

    public int getYear() {
        return calendar.get(Calendar.YEAR);
    }

    public String getMonth() {
        int m = getMonthInt();
        String[] months = {"January", "February", "March", "April", "May", "June",
            "July", "August", "September", "October", "November", "December"};
        if (m > 12) return "Unknown to Man";
        return months[m - 1];
    }

    public String getDay() {
        int x = getDayOfWeek();
        String[] days = {"Sunday", "Monday", "Tuesday", "Wednesday",
            "Thursday", "Friday", "Saturday"};
        if (x > 7) return "Unknown to Man";
        return days[x - 1];
    }

    public int getMonthInt() {
        return 1 + calendar.get(Calendar.MONTH);
    }

    public String getDate() {
        return getMonthInt() + "/" + getDayOfMonth() + "/" + getYear();
    }

    public String getTime() {
        return getHour() + ":" + getMinute() + ":" + getSecond();
    }

    public int getDayOfMonth() { return calendar.get(Calendar.DAY_OF_MONTH); }
    public int getDayOfYear() { return calendar.get(Calendar.DAY_OF_YEAR); }
    public int getWeekOfYear() { return calendar.get(Calendar.WEEK_OF_YEAR); }
    public int getWeekOfMonth() { return calendar.get(Calendar.WEEK_OF_MONTH); }
    public int getDayOfWeek() { return calendar.get(Calendar.DAY_OF_WEEK); }
    public int getHour() { return calendar.get(Calendar.HOUR_OF_DAY); }
    public int getMinute() { return calendar.get(Calendar.MINUTE); }
    public int getSecond() { return calendar.get(Calendar.SECOND); }

    public int getEra() { return calendar.get(Calendar.ERA); }

    public String getUSTimeZone() {
        String[] zones = {"Hawaii", "Alaskan", "Pacific", "Mountain", "Central", "Eastern"};
        return zones[10 + getZoneOffset()];
    }

    public int getZoneOffset() {
        return calendar.get(Calendar.ZONE_OFFSET) / (60 * 60 * 1000);
    }

    public int getDSTOffset() {
        return calendar.get(Calendar.DST_OFFSET) / (60 * 60 * 1000);
    }

    public int getAMPM() { return calendar.get(Calendar.AM_PM); }

    // 測試主程式
    public static void main(String args[]) {
        JSPCalendar db = new JSPCalendar();
        System.out.println("date: " + db.getDayOfMonth());
        System.out.println("year: " + db.getYear());
        System.out.println("month: " + db.getMonth());
        System.out.println("time: " + db.getTime());
        System.out.println("date: " + db.getDate());
        System.out.println("Day: " + db.getDay());
        System.out.println("DayOfYear: " + db.getDayOfYear());
        System.out.println("WeekOfYear: " + db.getWeekOfYear());
        System.out.println("era: " + db.getEra());
        System.out.println("ampm: " + db.getAMPM());
        System.out.println("DST: " + db.getDSTOffset());
        System.out.println("ZONE Offset: " + db.getZoneOffset());
        System.out.println("TIMEZONE: " + db.getUSTimeZone());
    }
}

功能說明

  • 基本日期時間:年、月、日、時、分、秒、完整日期字串、時間字串。
  • 曆法資訊:年度第幾天、年度第幾週、月內第幾週、星期幾(英文)。
  • 時區與夏令時間:時區位移(小時)、夏令時間位移、AM/PM 標誌、ERA(紀元)、美式時區名稱。

使用範例

JSPCalendar cal = new JSPCalendar();
System.out.println("今天是 " + cal.getDate());      // 例如 6/15/2024
System.out.println("現在時間 " + cal.getTime());    // 例如 14:30:05
System.out.println("星期 " + cal.getDay());        // 例如 Saturday
System.out.println("時區 " + cal.getUSTimeZone());  // 例如 Pacific

注意事項

  • 月份名稱與星期名稱為英文,若需中文請自行修改陣列。
  • getUSTimeZone() 僅適用於美洲時區,其他地區需擴充陣列。
  • 本類別為教學範例,正式專案建議改用 Java 8+ 的 java.time 套件(LocalDateTime、ZonedDateTime 等)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved