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