23、JAVA进阶——日期操作类

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 23、JAVA进阶——日期操作类

日期操作类


    (1)java.util包也是Java内置的一个工具包,它包含了集合框架、日期和时间、随机数生成器等各种实用工具类。


    (2)java.util包不会默认导入,如果要使用该包中的类,则必须在程序的开始部分进行手工导入。


    (3)java.util包中提供的和日期相关的类常见有:


             Date类        Calendar类        DateFormat类        SimpleDateFormat类


    (4)在JDK 1.1之间,Date类允许把日期解释为年、月、日、小时、分钟和秒值。它也允许格式化和解析日期字符串。不过,这些函数的API不易于实现国际化。从JDK 1.1开始,使用Calendar类实现日趋和时间字段之间的转化,使用DataFormat类来格式化和解析日期字符串。


1、Date类


       Date类对象用来表示日期和时间,该类提供了一系列操作日期和时间各组成部分的方法。Date类中使用最多的是获取系统当前的日期和时间。


       举例:Date date = new Date();这句代码是使用系统当前时间创建日期对象。


2、DateFormat类


       DateFormat类用来格式化日期和时间,它在java.text包下,是一个抽象类,提供了多种格式化和解析时间的方法。


       格式化是将日期转换成文本,解析是将文本转换成日期格式。


3、SimpleDateFormat类

       SimpleDateFormat类是DateFormat类的子类。


       SimpleDateFormat类是一个以语言环境有关的方式格式化和解析日期的具体类,如“yyyy-MM-dd HH:mm:ss”就是指定的一种日期和时间格式。


       例子:利用Date类和SimpleDateFormat类实现“2022年09月30日 09:20:42 星期五”的输出。


public class DateDemo01 {
  public static void main(String[] args) {
  // 创建Date类对象
  Date date = new Date();
  // System.out.println(date);
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss E D");
  String str = sdf.format(date);
  System.out.println("现在是:" + str);
  }

4、Calendar类

 Calendar类也是用老操作日期和时间的类,它可以看作是Date类的一个增强版。Calendar类提供了一组方法,允许把一个以毫秒为单位的时间转换成年、月、日、小时、分、秒。

可以把Calendar类当做是万年历,默认显示的是当前时间,当然也可以查看其他时间。


       Calendar类是抽象类,可以通过静态方法getInstance()获得Calendar类的对象,其实这个获得的对象是它的子类的对象。


       Calendar类提供一些方法和静态字段来操作日历,常用字段:


               -->int get(int field):返回给定日历字段的值。


               -->YEAR:指示年。


               -->MONTH:指示月。


               -->DAY_OF_MONTH:指示一个月中的某天。


               -->DAY_OF_WEEK:指示一个星期中的某天。

       例子:使用Calendar类实现:“2022年9月30日,9点25分29秒,星期五”格式的输出。

public static void main(String[] args) {
  // 直接创建一个Calendar类对象是创建不了的,因为Calendar类是一个抽象类
  Calendar cal = Calendar.getInstance();
  // 获取年
  int year = cal.get(Calendar.YEAR);
  // 获取月
  int month = cal.get(Calendar.MONTH);
  // 获取日
  int day = cal.get(Calendar.DAY_OF_MONTH);
  // 获取时分秒
  int hour = cal.get(Calendar.HOUR_OF_DAY);
  int minute = cal.get(Calendar.MINUTE);
  int second = cal.get(Calendar.SECOND);
  // 获取星期
  int week = cal.get(Calendar.DAY_OF_WEEK);
  String xingQi = null;
  switch (week) {
  case 1:
    xingQi = "星期日";
    break;
  case 2:
    xingQi = "星期一";
    break;
  case 3:
    xingQi = "星期二";
    break;
  case 4:
    xingQi = "星期三";
    break;
  case 5:
    xingQi = "星期四";
    break;
  case 6:
    xingQi = "星期五";
    break;
  case 7:
    xingQi = "星期六";
    break;
  }
  String[] weeks = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
  System.out.println("现在是:" + year + "年" + (month + 1) + "月" + day + "日,"
    + hour + "点" + minute + "分" + second + "秒," + weeks[week - 1]);
  System.out.println("今天是这一年中的第" + cal.get(Calendar.DAY_OF_YEAR) + "天");
  System.out.println("这个星期是这一年的第" + cal.get(Calendar.WEEK_OF_YEAR)
    + "个星期");
  }
Calendar类——字段摘要
static int ALL_STYLES
         指示所有风格名称的 getDisplayNames 的风格说明符,比如 "January" 和 "Jan"。
static int AM
         指示从午夜到中午之前这段时间的 AM_PM 字段值。
static int AM_PM
         getset 的字段数字,指示 HOUR 是在中午之前还是在中午之后。
static int APRIL
         指示在格里高利历和罗马儒略历中一年中第四个月的 MONTH 字段值。
protected  boolean areFieldsSet
         如果 fields[] 与当前的设置时间同步,则返回 true。
static int AUGUST
         指示在格里高利历和罗马儒略历中一年中第八个月的 MONTH 字段值。
static int DATE
         getset 的字段数字,指示一个月中的某天。
static int DAY_OF_MONTH
         getset 的字段数字,指示一个月中的某天。
static int DAY_OF_WEEK
         getset 的字段数字,指示一个星期中的某天。
static int DECEMBER
         指示在格里高利历和罗马儒略历中一年中第十二个月的 MONTH 字段值。
static int DST_OFFSET
         getset 的字段数字,以毫秒为单位指示夏令时的偏移量。
static int DAY_OF_WEEK_IN_MONTH
         getset 的字段数字,指示当前月中的第几个星期。
static int DAY_OF_YEAR
         getset 的字段数字,指示当前年中的天数。
static int ERA
         指示年代的 getset 的字段数字,比如罗马儒略历中的 AD 或 BC。
static int FEBRUARY
         指示在格里高利历和罗马儒略历中一年中第二个月的 MONTH 字段值。
static int FIELD_COUNT
         getset 可识别的不同字段的数量。
protected  int[] fields
         此日历当前设置时间的日历字段值。
static int FRIDAY
         指示 Friday 的 DAY_OF_WEEK 字段值。
static int HOUR
         getset 的字段数字,指示上午或下午的小时。
static int HOUR_OF_DAY
         getset 的字段数字,指示一天中的小时。
protected  boolean[] isSet
         通知是否设置了该日历某一指定日历字段的标志。
protected  boolean isTimeSet
         如果 time 值是一个有效值,则返回 true。
static int JANUARY
         指示在格里高利历和罗马儒略历中一年中第一个月的 MONTH 字段值。
static int JULY
         指示在格里高利历和罗马儒略历中一年中第七个月的 MONTH 字段值。
static int JUNE
         指示在格里高利历和罗马儒略历中一年中第六个月的 MONTH 字段值。
static int LONG
         指示长名称的 getDisplayNamegetDisplayNames 的风格说明符,比如 "January"。
static int MARCH
         指示在格里高利历和罗马儒略历中一年中第三个月的 MONTH 字段值。
static int MAY
         指示在格里高利历和罗马儒略历中一年中第五个月的 MONTH 字段值
static int MILLISECOND
         getset 的字段数字,指示一秒中的毫秒。
static int MINUTE
         getset 的字段数字,指示一小时中的分钟。
static int MONDAY
         指示 Monday 的 DAY_OF_WEEK 字段值。
static int MONTH
         指示月份的 getset 的字段数字。
static int NOVEMBER
         指示在格里高利历和罗马儒略历中一年中第十一个月的 MONTH 字段值。
static int OCTOBER
         指示在格里高利历和罗马儒略历中一年中第十个月的 MONTH 字段值。
static int PM
         指示从中午到午夜之前这段时间的 AM_PM 字段值。
static int SATURDAY
         指示 Saturday 的 DAY_OF_WEEK 字段值。
static int SECOND
         getset 的字段数字,指示一分钟中的秒。
static int SEPTEMBER
         指示在格里高利历和罗马儒略历中一年中第九个月的 MONTH 字段值。
static int SHORT
         指示短名称的 getDisplayNamegetDisplayNames 的风格说明符,比如 "Jan"。
static int SUNDAY
         指示 Sunday 的 DAY_OF_WEEK 字段值。
static int THURSDAY
         指示 Thursday 的 DAY_OF_WEEK 字段值。
protected  long time
         日历的当前设置时间,以毫秒为单位,表示自格林威治标准时间 1970 年 1月 1 日 0:00:00 后经过的时间。
static int TUESDAY
         指示 Tuesday 的 DAY_OF_WEEK 字段值。
static int UNDECIMBER
         指示一年中第十三个月的 MONTH 字段值。
static int WEDNESDAY
         指示 Wednesday 的 DAY_OF_WEEK 字段值。
static int WEEK_OF_MONTH
         getset 的字段数字,指示当前月中的星期数。
static int WEEK_OF_YEAR
         getset 的字段数字,指示当前年中的星期数。
static int YEAR
         指示年的 getset 的字段数字。
static int ZONE_OFFSET
         getset 的字段数字,以毫秒为单位指示距 GMT 的大致偏移量。


相关文章
|
16天前
|
Java Linux
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
36 1
|
16天前
|
Java 索引
java基础(13)String类
本文介绍了Java中String类的多种操作方法,包括字符串拼接、获取长度、去除空格、替换、截取、分割、比较和查找字符等。
28 0
java基础(13)String类
|
4天前
|
Java
Java Object 类详解
在 Java 中,`Object` 类是所有类的根类,每个 Java 类都直接或间接继承自 `Object`。作为所有类的超类,`Object` 定义了若干基本方法,如 `equals`、`hashCode`、`toString` 等,这些方法在所有对象中均可使用。通过重写这些方法,可以实现基于内容的比较、生成有意义的字符串表示以及确保哈希码的一致性。此外,`Object` 还提供了 `clone`、`getClass`、`notify`、`notifyAll` 和 `wait` 等方法,支持对象克隆、反射机制及线程同步。理解和重写这些方法有助于提升 Java 代码的可读性和可维护性。
|
9天前
|
Java API
Java的日期类都是怎么用的
【10月更文挑战第1天】本文介绍了 Java 中处理日期和时间的三个主要类:`java.util.Date`、`java.util.Calendar` 和 `java.time` 包下的新 API。`Date` 类用于表示精确到毫秒的瞬间,可通过时间戳创建或获取当前日期;`Calendar` 抽象类提供丰富的日期操作方法,如获取年月日及时区转换;`java.time` 包中的 `LocalDate`、`LocalTime`、`LocalDateTime` 和 `ZonedDateTime` 等类则提供了更为现代和灵活的日期时间处理方式,支持时区和复杂的时间计算。
29 14
|
26天前
|
存储 安全 Java
Java——String类详解
String 是 Java 中的一个类,用于表示字符串,属于引用数据类型。字符串可以通过多种方式定义,如直接赋值、创建对象、传入 char 或 byte 类型数组。直接赋值会将字符串存储在串池中,复用相同的字符串以节省内存。String 类提供了丰富的方法,如比较(equals() 和 compareTo())、查找(charAt() 和 indexOf())、转换(valueOf() 和 format())、拆分(split())和截取(substring())。此外,还介绍了 StringBuilder 和 StringJoiner 类,前者用于高效拼接字符串,后者用于按指定格式拼接字符串
24 1
Java——String类详解
|
11天前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
24 3
|
17天前
|
存储 Java
Java编程中的对象和类
【8月更文挑战第55天】在Java的世界中,“对象”与“类”是构建一切的基础。就像乐高积木一样,类定义了形状和结构,而对象则是根据这些设计拼装出来的具体作品。本篇文章将通过一个简单的例子,展示如何从零开始创建一个类,并利用它来制作我们的第一个Java对象。准备好让你的编程之旅起飞了吗?让我们一起来探索这个神奇的过程!
26 10
|
13天前
|
安全 Java API
时间日期API(Date,SimpleDateFormat,Calendar)+java8新增日期API (LocalTime,LocalDate,LocalDateTime)
这篇文章介绍了Java中处理日期和时间的API,包括旧的日期API(Date、SimpleDateFormat、Calendar)和Java 8引入的新日期API(LocalTime、LocalDate、LocalDateTime)。文章详细解释了这些类/接口的方法和用途,并通过代码示例展示了如何使用它们。此外,还讨论了新旧API的区别,新API的不可变性和线程安全性,以及它们提供的操作日期时间的灵活性和简洁性。
|
13天前
|
安全 Java 编译器
java访问类字段
java访问类字段
|
16天前
|
Java
java的class类
java的class类
21 5