Java 中的日曆類

Sarwan Soomro 2023年10月12日
  1. Java.util.Calendar
  2. java.util.Locale
  3. Java 中 GregorianCalendar() 類和 Calendar 類之間的區別
  4. Java 中日曆類的實現
  5. 概括
Java 中的日曆類

本文將向你展示如何使用 Java 的日曆系統。它是 Calendar 類的特定子類。

此外,它還提供世界上使用最廣泛的日曆系統。此外,它是一種混合日曆,可與儒略曆和日曆標準互操作。

Java.util.Calendar

Calendar 類是一個抽象類,包含用於在特定時間點和日曆欄位集合之間轉換的方法,例如 YEARMONTHDAY OF MONTHHOURWEEK_OF_YEARZONE_OFFSETFIELD_COUNTMILLISECOND 和許多其他

此外,它還允許使用者修改日曆欄位,例如獲取下一週的日期。

注意
它是在建立 Calendar 類物件時配置的。

語法:

Calendar ModifyCal = Calendar.getInstance();

java.util.Locale

Locale 物件表示特定的地理、政治或文化領域。一個區域敏感的動作需要一個 Locale 來執行它的任務。

它還應用 Locale 為使用者定製資訊。

Java 中 GregorianCalendar() 類和 Calendar 類之間的區別

區別很容易理解。你已經知道,當我們在大多數程式中使用 Calendar 時,它會構造一個日曆物件:getInstance()

儘管如此,還是有一些異常值。值得注意的是,你可以設定的位置/區域以根據你所在的區域顯示特定的日曆系統。

換句話說,假設你需要你的 CalendarGregorianCalendar()。在這種情況下,你需要做的就是編寫一個新的:GregorianCalendar()

但是,我們建議讓 Java 虛擬機器決定預設選擇哪個區域。你必須使用單詞 Calendar.getInstance(),並準備好應對選擇另一種日曆型別的可能性。

Java 中一些值得注意的日曆函式

首先,這些方法及其型別很有幫助。請注意,除此之外還有多種方法。

如果你開啟 java.util.GregorianCalendar 類或 calendar 類檔案進行學習,將會有所幫助。

SN 型別 函式語法 概括
1 TimeZone getTimeZone() 此功能為你提供當前時區。
2 int getWeekYear() 它只是根據日曆返回一週年。
3 void setTimeZone 你可以使用此方法新增值以設定時區。
4 void setWeekDate 它將 GregorianCalendar 更改為日期說明符指定的日期。
5 boolean isWeekDateSupported() 它只返回 true,表明該類支援特定的星期日期。
6 void setGregorianChange(日期日期) 你可以使用此功能修改日期。
7 int hashCode() 它將為你提供此日曆的雜湊碼物件。

Java 中 Calendar 建構函式的重要性

這些建構函式可幫助你擴充套件預設類結構並修改你想要自定義的語言環境、日期、時間、區域和其他功能引數。在大多數程式中,我們不想要預設解決方案,有時,我們想嘗試自己的一些東西。

相反,我們的客戶對格式的偏好可能會有所不同。因此,我們強烈建議研究這些功能。

注意
我們還將在本教程的下一部分執行這些方法中的大部分來演示它們的使用。
SN 函式名稱和語法 概括
1 GregorianCalendar() 構造區域的預設格式和預設區域中的當前時間。
2 日曆(時區) 基於提供的時區的當前時間。
3 GregorianCalendar(TimeZone zone, Locale aLocale) 基於提供的時區和地區的當前時間。
4 GregorianCalendar(int year, int month, int dayOfMonth) 構造一個 GregorianCalendar,並在預設時區和語言環境中設定指定日期。
5 GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute) 為預設時區和地區構造一個具有指定日期和時間的 GregorianCalendar

Java 中日曆類的實現

一個使用 getTime() 列印今天日期的簡單程式。

示例 1:

package delftstack.calendar.com.util;

import java.util.Date;
import java.util.GregorianCalendar;

// A simple program to print today's date using getTime();
public class Example1 {
  public static void main(String[] args) {
    GregorianCalendar printtodaydate = new GregorianCalendar();
    Date defualt = printtodaydate.getTime();

    System.out.println(defualt);
  }
}

輸出:

Mon Mar 28 04:50:00 PDT 2022

示例 2:獲取當前星期幾。

package delftstack.calendar.com.util;

import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;
// get current day of the weak
public class Example2 {
  public static void main(String[] args) {
    GregorianCalendar DOW = new GregorianCalendar();
    SimpleDateFormat formatter = new SimpleDateFormat("EEEE");
    String dayOfWeek = formatter.format(DOW.getTime());
    System.out.println(dayOfWeek);
  }
}

輸出:

Monday

示例 3:修改當前日期 100 年後的這一天。

package delftstack.calendar.com.util;

import java.util.Calendar;
import java.util.GregorianCalendar;

// modify current date
// after 100 years on this day
public class Example3 {
  public static void main(String[] args) {
    GregorianCalendar gregorianCalendar = new GregorianCalendar();
    java.util.Date currentdate = gregorianCalendar.getTime();

    gregorianCalendar.set(Calendar.YEAR, gregorianCalendar.get(Calendar.YEAR) + 100);

    System.out.println("It is: " + currentdate + " today");
    System.out.println("After 100 year on today: " + gregorianCalendar.getTime());
  }
}

輸出:

It is: Mon Mar 28 04:53:53 PDT 2022 today
After 100 year on today: Sat Mar 28 04:53:53 PDT 2122

示例 4:根據需要重新格式化日曆日期 YY-MMM-dd

package delftstack.calendar.com.util;

import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;

public class Example4 {
  // reformat calendar date as you want
  // YY-MMM-dd
  public static void main(String[] args) {
    GregorianCalendar gregorianCalendar = new GregorianCalendar();
    SimpleDateFormat reformat = new SimpleDateFormat("YY/MM/dd");
    String newformat = reformat.format(gregorianCalendar.getTime());
    System.out.println(newformat);
  }
}

輸出:

22/03/28

示例 5:我當前的時區是什麼?

package delftstack.calendar.com.util;

// what is my current time zone
import java.util.GregorianCalendar;

public class Example5 {
  public static void main(String[] args) {
    // Create a new calendar
    GregorianCalendar update = (GregorianCalendar) GregorianCalendar.getInstance();

    System.out.println("What is my current time zone? ");
    System.out.println("Your time zone is: " + update.getTimeZone().getDisplayName());
  }
}

輸出:

What is my current time zone?
Your time zone is: Pacific Standard Time

示例 6:將我當前的時區設定為 GMT

package delftstack.calendar.com.util;

import java.util.GregorianCalendar;
import java.util.TimeZone;

public class Example6 {
  public static void main(String[] args) {
    // Create a new cal class
    GregorianCalendar setnewtimezone = (GregorianCalendar) GregorianCalendar.getInstance();
    // Convert to another time zone
    setnewtimezone.setTimeZone(TimeZone.getTimeZone("GMT"));
    System.out.println("Set my current time zone to GMT");
    setnewtimezone.getTimeZone().getDisplayName();
    System.out.println("Now print it to confirm updated time zone: "
        + setnewtimezone.getTimeZone().getDisplayName());
  }
}

輸出:

Set my current time zone to GMT
Now print it to confirm the updated time zone: Greenwich Mean Time

示例 7:使用 Java calendar 類顯示日期。

package delftstack.calendar.com.util;

import java.util.Calendar;

public class ShowDateWithJavaCalendarClass {
  public static void main(String[] args) {
    // Make an obj of Cal Class
    Calendar ModCalendarclass = Calendar.getInstance();

    System.out.println(
        "A simple program to show date using java calendar class: " + ModCalendarclass.getTime());
  } // function
} // class

輸出:

A simple program to show date using java calendar class: Mon Mar 28 05:01:31 PDT 2022

示例 8:使用 Java GregorianCalendar 類顯示日期。

package delftstack.calendar.com.util;

import java.util.GregorianCalendar;

public class ShowDateWithJavaGreogorianCalendarClass {
  public static void main(String[] args) {
    // use gregorian calendar class
    GregorianCalendar ModGg = new GregorianCalendar();
    // display date with grogerian

    System.out.print(
        "A simple program to show date using java gregorian calendar class: " + ModGg.getTime());
  }
}

輸出:

A simple program to show date using java gregorian calendar class: Mon Mar 28 05:03:25 PDT 2022

在 Java 中的 GregorianCalendar 類上使用建構函式

示例 9:使用 Java GregorianCalendar 類顯示日期。

package delftstack.calendar.com.util;

import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;

// creating GregorianCalendarExample1 to define default constructor
public class CustomizeCalUsingDefaultConstructor {
  // main() method start
  public static void main(String args[]) {
    // Make an array that contains months
    String setmonths[] = {
        "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};

    // Array for the AM, PM
    String ampm[] = {"AM", "PM"};

    // Create GregorianCalendar and use it as constructor
    GregorianCalendar ModGg = new GregorianCalendar();

    // Print date, time, others
    System.out.println("Current Date: " + ModGg.get(Calendar.DATE));
    System.out.println("Current Month: " + setmonths[ModGg.get(Calendar.MONTH)]);
    System.out.println("Current Year: " + ModGg.get(Calendar.YEAR));
    System.out.println("Current Time: " + ModGg.get(Calendar.HOUR) + ":"
        + ModGg.get(Calendar.MINUTE) + " " + ModGg.get(Calendar.SECOND) + " "
        + ampm[ModGg.get(Calendar.AM_PM)]);
    System.out.println("Region: " + ModGg.getTimeZone().getDisplayName());
    System.out.println("Region: " + Locale.getDefault().getDisplayName());
  }
}

輸出:

Current Date: 28
Current Month: Mar
Current Year: 2022
Current Time: 5:7 15 AM
Region: Pacific Standard Time
Region: English (United States)

概括

你可以以任何你希望的方式在 Java 中編輯 GregorianCalendar 類或 calendar 類的預設引數。實施時間、日期、區域、區域設定和其他調整對於新手來說相對簡單。

我們希望你現在瞭解如何在 Java 中使用日曆。請繼續調整和練習到目前為止所學的內容。

作者: Sarwan Soomro
Sarwan Soomro avatar Sarwan Soomro avatar

Sarwan Soomro is a freelance software engineer and an expert technical writer who loves writing and coding. He has 5 years of web development and 3 years of professional writing experience, and an MSs in computer science. In addition, he has numerous professional qualifications in the cloud, database, desktop, and online technologies. And has developed multi-technology programming guides for beginners and published many tech articles.

LinkedIn

相關文章 - Java Calendar