详解Java中的日期类

详解Java中的日期类

Java提供了许多用于处理日期和时间的内置类,其中包括日期类、时间类、日历类等。在这些类中,最基础和常用的是日期类java.util.Date和日期格式化类java.text.SimpleDateFormat

java.util.Date类

java.util.Date类表示了一个时间点,它存储了一个long类型的整数值,该值代表了从1970年1月1日00:00:00 UTC到该日期所经过的毫秒数。通过该类提供的方法,可以将该时间点表示的时间转换成UTC、本地时间、时间戳等不同形式,以及进行时间运算、比较、取整等操作。

创建Date对象

创建Date对象最常用的方法是调用无参构造函数Date(),该方法返回一个代表当前时间的Date对象。除此之外,也可以通过传入long型时间戳参数的构造函数Date(long date)创建指定时间的Date对象。

// 创建当前时间的Date对象
Date now = new Date();
// 创建指定时间的Date对象
Date time = new Date(1606128000000L); // 时间戳:2020-11-24 00:00:00

转换日期格式

一个Date对象实际上只是代表了一个时间点,它和日期格式是无关的。日期格式是指日期的展示方式,例如"yyyy-MM-dd HH:mm:ss"、"yyyy年MM月dd日"等。为了按照一定的格式展示Date对象代表的时间,我们需要使用日期格式化类SimpleDateFormat

// 创建SimpleDateFormat对象,指定输出日期的格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 将Date对象表示的时间转换成指定格式的字符串
String formattedTime = sdf.format(now);
System.out.println(formattedTime); // 2021-03-08 15:36:45

时间运算和比较

通过Date类提供的方法,我们可以对时间进行运算、比较等操作。

// 计算两个时间点之间相差的毫秒数
long diff = now.getTime() - time.getTime();
System.out.println("相差毫秒数:" + diff);
// 判断时间大小
System.out.println(now.after(time)); // true
System.out.println(now.before(time)); // false

日期格式化类SimpleDateFormat

SimpleDateFormat类是用于日期格式化和解析的工具类,它提供了构造函数和方法来指定日期格式、解析字符串、格式化日期等相关功能。

初始化并使用SimpleDateFormat

SimpleDateFormat的构造函数有多种重载形式,可以指定不同的日期模板。通常使用的方法是,使用特定的日期模板初始化SimpleDateFormat对象,再使用该对象的parse方法解析字符串,或使用format方法将Date类型的日期格式化成字符串。

// 实例化SimpleDateFormat对象,指定日期格式
SimpleDateFormat fmt = new SimpleDateFormat("yyyy/MM/dd");
// 解析指定格式字符串为Date类型
Date date = fmt.parse("2021/03/08");
// 将Date类型日期格式化成指定格式的字符串
String str = fmt.format(date);
System.out.println(str); // 2021/03/08

日期模板

SimpleDateFormat支持的日期模板如下:

符号 含义
yyyy 完整的年份
MM 月份,不足两位数时前面补0
M 月份
dd 日期,不足两位数时前面补0
d 日期
HH 小时,24小时制,不足两位数时前面补0
H 小时,24小时制
hh 小时,12小时制,不足两位数时前面补0
h 小时,12小时制
mm 分钟,不足两位数时前面补0
m 分钟
ss 秒,不足两位数时前面补0
s

日期计算

SimpleDateFormat也支持日期计算,例如加减年份、月份、日期等。

Date date = new SimpleDateFormat("yyyy/MM/dd").parse("2021/03/08");
// 计算加上一个月后的日期
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH, 1);
String str = new SimpleDateFormat("yyyy/MM/dd").format(cal.getTime());
System.out.println(str); // 2021/04/08

示例

示例一:计算距离现在一周后的日期

Date curDate = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(curDate);
cal.add(Calendar.WEEK_OF_YEAR, 1);
String formattedDate = new SimpleDateFormat("yyyy年M月d日").format(cal.getTime());
System.out.println("距离今天一周后的日期:" + formattedDate);

输出:

距离今天一周后的日期:2021年3月15日

示例二:解析字符串为Date类型

String str = "2021-03-08";
Date date = new SimpleDateFormat("yyyy-MM-dd").parse(str);
System.out.println("解析字符串为Date类型:" + date);

输出:

解析字符串为Date类型:Mon Mar 08 00:00:00 CST 2021

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Java中的日期类 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • 简单谈谈java中匿名内部类构造函数

    Java中匿名内部类是没有名称的内部类,可以用来简化代码的编写。匿名内部类是在使用的时候定义的,它没有构造函数名,创建对象时直接使用new关键字即可,构造函数的参数以及实现的抽象方法直接写在new后面的大括号中。 Java中匿名内部类的语法格式为: new 类或者接口名称(){ //实现类或接口中的抽象方法 } 这样创建的实例是匿名内部类的实例,该实例可以实…

    Java 2023年5月26日
    00
  • 解析在Tomcat中启用虚拟线程特性

    解析在Tomcat中启用虚拟线程特性的完整攻略 什么是虚拟线程? 虚拟线程是一种优化Java Web服务器性能的一种技术,虚拟线程的实现不完全依赖于物理线程,而是通过线程池去模拟实现,这样就可以比物理线程更灵活的、更充分的利用服务器的资源,提高性能。 启用Tomcat虚拟线程特性 要启用Tomcat的虚拟线程特性,需要遵循以下步骤: 步骤1:修改server…

    Java 2023年5月19日
    00
  • IDEA全局查找关键字的用法解读

    下面就为大家详细讲解“IDEA全局查找关键字的用法解读”的完整攻略。 1. 什么是IDEA全局查找 IDEA全局查找是指在IDEA中查找某个关键字时,不仅可以在当前文件中查找,还可以在整个项目中查找。 2. 如何使用IDEA全局查找 使用IDEA全局查找非常简单,具体步骤如下: 打开需要查找的项目。 在菜单栏中点击“Edit” -> “Find” -&…

    Java 2023年6月15日
    00
  • java中处理json各种各样的转换方法(推荐)

    Java中处理JSON的转换方法 什么是JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它是基于JavaScript的一个子集,易于人类阅读和编写,同时也易于机器解析和生成。JSON是一种文本格式,可以简洁地表示复杂的数据结构。它常被用作Web应用程序间的数据交换格式,也常被用于存储和传输数据。 JSON…

    Java 2023年5月26日
    00
  • 深入了解Java中的反射机制(reflect)

    深入了解Java中的反射机制(Reflect) 什么是反射机制? 反射机制是Java的一个重要特性,用于在运行时查看、检测、修改和创建对象。它允许程序在运行时动态获取类的信息,包括类名、字段名称、方法、构造函数等,并在运行时动态调用这些方法和构造函数。反射机制提供了很多灵活性和可扩展性,但也需要付出性能的代价,因为反射机制在运行时需要使用大量的系统资源。 反…

    Java 2023年5月26日
    00
  • Java中Calendar类的一些常用方法小结

    下面是详细讲解“Java中Calendar类的一些常用方法小结”的完整攻略: Java中Calendar类的一些常用方法小结 什么是Calendar类 Calendar类是Java中处理日期时间的重要类之一,它位于java.util包中,提供了许多用于处理Calendar对象的方法。 Calendar类的实例化 通过调用Calendar.getInstanc…

    Java 2023年5月20日
    00
  • java实现统计字符串中字符及子字符串个数的方法示例

    Java实现统计字符串中字符及子字符串个数的方法示例 介绍 在Java中,我们经常需要对字符串进行统计,例如统计一个字符串中字符出现的个数或者子字符串出现的次数。本文将介绍一些基础的Java实现方法,可用于解决该问题。 统计字符串中字符出现的个数 对于字符串中字符出现的次数,主要有以下两种实现方法: 方法一:使用Map统计 可以通过Map来统计一个字符串中字…

    Java 2023年5月27日
    00
  • Nginx自定义访问日志的配置方式

    下面详细讲解一下“Nginx自定义访问日志的配置方式”的完整攻略,具体步骤如下: 1. 确认Nginx的日志模块是否已经安装 在开始配置之前,我们需要确保本机上已经安装了Nginx的日志模块,可以通过以下命令进行确认: nginx -V 2>&1 | grep -o with-http_log_module 如果终端上显示了“with-http…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部