详解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中的定时器Timer详解

    Java中的定时器Timer详解 什么是定时器Timer 定时器是一种Java中的工具,它可以在指定的时间间隔内重复执行特定任务或者仅仅执行一次特定的任务。 Timer的使用方法 该类包含两个直接实现接口Runnable的类:Task和TimerThread,其中TimerThread作为线程实现了计时,而Task实现了具体的任务内容。 Timer time…

    Java 2023年5月20日
    00
  • jsp如何获取Session中的值

    要获取Session中的值,需要通过JSP内置对象session来实现。下面是详细步骤: 1.在JSP中获取Session对象 要在JSP中获取Session对象,可以直接使用内置对象session。代码如下: <% HttpSession session = request.getSession(); %> 其中,request是另一个内置对象…

    Java 2023年6月15日
    00
  • JSP上传excel及excel插入至数据库的方法

    首先需要了解一些基本概念: JSP:Java Server Pages,是一种基于Java技术的动态网页开发技术,可以用来创建动态生成的HTML、XML或其他格式文档。 Excel:一种电子表格处理软件,可以用来以表格形式展示、计算和管理数据。 数据库:是一个存储数据的集合,在Web应用中通常使用关系型数据库,例如MySQL、Oracle等。 实现JSP上传…

    Java 2023年6月15日
    00
  • Java switch关键字原理及用法详解

    Java switch关键字原理及用法详解 1. 概述 switch 是 Java 中的一个关键字,用于基于不同的条件执行不同的操作。它是一种比较简单却又很实用的控制语句,它包含一个或多个 case 模块,每个模块代表一个条件,当条件满足时执行相应的代码。 2. 语法结构 switch 控制语句的语法结构如下: switch (expression) { c…

    Java 2023年5月27日
    00
  • Java C++刷题leetcode1106解析布尔表达式

    Java C++刷题leetcode1106解析布尔表达式 问题描述 给你一个以字符串形式表述的 布尔表达式(boolean) expression,返回该式的运算结果。 有效的表达式需遵循以下约定: “t”,运算结果为 True “f”,运算结果为 False “!(expr)”,运算过程为对内部表达式 expr 进行逻辑 非的运算(NOT) “&…

    Java 2023年5月26日
    00
  • 解决表单post,get到springMVC后台乱码的问题

    解决表单post,get到springMVC后台乱码的问题,可以分为以下几个步骤: 1.设置字符编码过滤器 在web.xml配置文件中添加字符编码过滤器,用于处理所有请求的字符编码。 <filter> <filter-name>encodingFilter</filter-name> <filter-class&gt…

    Java 2023年6月16日
    00
  • Spring Security权限管理小结

    关于“Spring Security权限管理小结”的完整攻略,我们可以从以下几个方面来介绍。 1. Spring Security简介 Spring Security是一款基于Spring框架的安全框架,提供了丰富的安全特性和机制,支持登录认证、授权访问、安全协议、攻击防护等功能。在Spring应用中,使用Spring Security可以非常方便地实现系统…

    Java 2023年5月19日
    00
  • Spring Boot与Spring MVC Spring对比及核心概念

    下面是关于“Spring Boot与Spring MVC Spring对比及核心概念”的完整攻略。 Spring Framework简介 Spring Framework是一个全栈的Java框架,它为企业级应用程序提供了一个全面的编程和配置模型。它包括许多独立的模块,可以根据需要选择使用。一些最常用的模块是Spring Core容器、Spring MVC W…

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