该文章Github地址:https://github.com/AntonyCheng/java-notes
在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.csdn.net/AntonyCheng/article/details/136555245),该模板集成了最常见的开发组件,同时基于修改配置文件实现组件的装载,除了这些,模板中还有非常丰富的整合示例,同时单体架构也非常适合SpringBoot框架入门,如果觉得有意义或者有帮助,欢迎Star & Issues & PR!
上一章:由浅到深认识Java语言(23):System类
36.Date类
定义:
Date 类表示特定的瞬间,精确到毫秒;
时间是一个有距离的长度,长度的起始是 1970 年 1 月 1 日 8 点 0 分 0 秒,这个时间是 C 语言的生日, Java 是 C 语言写的,因此 java 中的时间就是从这个时间开始计算的;
Date构造器
构造方法摘要 |
---|
Date() 分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。 |
Date(int year, int month, int date) 已过时。 从 JDK 1.1 开始,由 Calendar.set(year + 1900, month, date) 或 GregorianCalendar(year + 1900, month, date) 取代。 |
Date(int year, int month, int date, int hrs, int min) 已过时。 从 JDK 1.1 开始,由 Calendar.set(year + 1900, month, date, hrs, min) 或 GregorianCalendar(year + 1900, month, date, hrs, min) 取代。 |
Date(int year, int month, int date, int hrs, int min, int sec) 已过时。 从 JDK 1.1 开始,由 Calendar.set(year + 1900, month, date, hrs, min, sec) 或 GregorianCalendar(year + 1900, month, date, hrs, min, sec) 取代。 |
Date(long date) 分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。 |
Date(String s) 已过时。 从 JDK 1.1 开始,由 DateFormat.parse(String s) 取代。 |
Date方法
返回类型 | 方法解释 |
---|---|
boolean | after(Date when) 测试此日期是否在指定日期之后。 |
boolean | before(Date when) 测试此日期是否在指定日期之前。 |
Object | clone() 返回此对象的副本。 |
int | compareTo(Date anotherDate) 比较两个日期的顺序。 |
boolean | equals(Object obj) 比较两个日期的相等性。 |
int | getDate() 已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.DAY_OF_MONTH) 取代。 |
int | getDay() 已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.DAY_OF_WEEK) 取代。 |
int | getHours() 已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.HOUR_OF_DAY) 取代。 |
int | getMinutes() 已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.MINUTE) 取代。 |
int | getMonth() 已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.MONTH) 取代。 |
int | getSeconds() 已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.SECOND) 取代。 |
long | getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。 |
int | getTimezoneOffset() 已过时。 从 JDK 1.1 开始,由 -(Calendar.get(Calendar.ZONE_OFFSET) + Calendar.get(Calendar.DST_OFFSET)) / (60 \* 1000) 取代。 |
int | getYear() 已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.YEAR) - 1900 取代。 |
int | hashCode() 返回此对象的哈希码值。 |
static long | parse(String s) 已过时。 从 JDK 1.1 开始,由 DateFormat.parse(String s) 取代。 |
void | setDate(int date) 已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.DAY_OF_MONTH, int date) 取代。 |
void | setHours(int hours) 已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.HOUR_OF_DAY, int hours) 取代。 |
void | setMinutes(int minutes) 已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.MINUTE, int minutes) 取代。 |
void | setMonth(int month) 已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.MONTH, int month) 取代。 |
void | setSeconds(int seconds) 已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.SECOND, int seconds) 取代。 |
void | setTime(long time) 设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。 |
void | setYear(int year) 已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.YEAR, year + 1900) 取代。 |
String | toGMTString() 已过时。 从 JDK 1.1 开始,由 DateFormat.format(Date date) 取代,使用 GMT TimeZone 。 |
String | toLocaleString() 已过时。 从 JDK 1.1 开始,由 DateFormat.format(Date date) 取代。 |
String | toString() 把此 Date 对象转换为以下形式的 String : dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat )。 |
static long | UTC(int year, int month, int date, int hrs, int min, int sec) 已过时。 从 JDK 1.1 开始,由 Calendar.set(year + 1900, month, date, hrs, min, sec) 或 GregorianCalendar(year + 1900, month, date, hrs, min, sec) 取代,使用 UTC TimeZone ,后跟 Calendar.getTime().getTime() 。 |
Date常用方法
after(Date when)/before(Date when)
测试此日期是否在指定日期之前/后:
package top.sharehome.Bag;
import java.util.*;
public class Demo {
public static void main(String[] args) {
Date d1 = new Date(0);
Date d2 = new Date(1);
boolean after = d1.after(d2);
System.out.println(after);
}
}
打印效果如下:
getTime()
返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date
对象表示的毫秒数:
package top.sharehome.Bag;
import java.util.*;
public class Demo {
public static void main(String[] args) {
Date d = new Date();
long time = d.getTime();
System.out.println(time);
}
}
打印效果如下:
SimpleDateFormat类
定义:
SimpleDateFormat
是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 ==> 文本)、解析(文本 ==> 日期)和规范化。
格式化标准表格:
字母 日期或时间元素 表示 示例 G
Era 标志符 Text AD
y
年 Year 1996
;96
M
年中的月份 Month July
;Jul
;07
w
年中的周数 Number 27
W
月份中的周数 Number 2
D
年中的天数 Number 189
d
月份中的天数 Number 10
F
月份中的星期 Number 2
E
星期中的天数 Text Tuesday
;Tue
a
Am/pm 标记 Text PM
H
一天中的小时数(0-23) Number 0
k
一天中的小时数(1-24) Number 24
K
am/pm 中的小时数(0-11) Number 0
h
am/pm 中的小时数(1-12) Number 12
m
小时中的分钟数 Number 30
s
分钟中的秒数 Number 55
S
毫秒数 Number 978
z
时区 General time zone Pacific Standard Time
;PST
;GMT-08:00
Z
时区 RFC 822 time zone -0800
格式化示例表格:
日期和时间模式 结果 "yyyy.MM.dd G 'at' HH:mm:ss z"
2001.07.04 AD at 12:08:56 PDT
"EEE, MMM d, ''yy"
Wed, Jul 4, '01
"h:mm a"
12:08 PM
"hh 'o''clock' a, zzzz"
12 o'clock PM, Pacific Daylight Time
"K:mm a, z"
0:08 PM, PDT
"yyyyy.MMMMM.dd GGG hh:mm aaa"
02001.July.04 AD 12:08 PM
"EEE, d MMM yyyy HH:mm:ss Z"
Wed, 4 Jul 2001 12:08:56 -0700
"yyMMddHHmmssZ"
010704120856-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"
2001-07-04T12:08:56.235-0700
格式化示例如下: SimpleDateFormat.format() 方法
将当前时刻的 long 型转换成 String 型,以便大家能看懂;
package top.sharehome.Bag;
import java.text.SimpleDateFormat;
import java.util.*;
public class Demo {
public static void main(String[] args) {
Date d = new Date();
System.out.println(d);
//创建了一个带指定模式的 SimpleDateFormat 对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
//使用对象格式化时间
String format = sdf.format(d);
System.out.println(format);
}
}
打印效果如下:
解析示例如下:
从键盘输入一个日期,解析成 Date 对象;
package top.sharehome.Bag;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class Demo {
public static void main(String[] args) throws ParseException { //抛出异常后面会有
Scanner sc = new Scanner(System.in);
System.out.println("请输入xxxx年xx月xx日xx:xx:xx这样格式的时间:");
String str = sc.next();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
Date d0 = new Date(0);
Date d = new Date();
d = sdf.parse(str);
System.out.println(d);
System.out.println(d.getTime());
System.out.println("1970年1月1日08:00:00的时间是:");
System.out.println(d0);
System.out.println(d0.getTime());
}
}
打印效果如下:
常用构造器
常用构造方法摘要 |
---|
SimpleDateFormat(String pattern) 用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat 。 |
常用方法
format(Date date, StringBuffer toAppendTo, FieldPosition pos)
将给定的 Date
格式化为日期/时间字符串,并将结果添加到给定的 StringBuffer
;
package top.sharehome.Bag;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
Date d = new Date(0);
String format = sdf.format(d);
System.out.println(format);
}
}
打印效果如下:
parse(String text, ParsePosition pos)
解析字符串的文本,生成 Date
;
package top.sharehome.Bag;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo {
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
String str = "1970.01.01 08:00:00";
Date parse = sdf.parse(str);
System.out.println(parse);
}
}
打印效果如下:
Calendar类
定义:
Calendar
类是一个抽象类,它为特定瞬间与一组诸如 YEAR
、MONTH
、DAY_OF_MONTH
、HOUR
等 日历字段
之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
如何获得一个 Calendar 对象:
因为 Calendar 对象受保护,可以通过继承来获得一个 Calendar 对象:
package top.sharehome.Bag;
import java.util.Calendar;
import java.util.Date;
public class Demo {
public static void main(String[] args) {
Calendar c = new A();
}
}
class A extends Calendar{
@Override
protected void computeTime() {
// TODO Auto-generated method stub
}
@Override
protected void computeFields() {
// TODO Auto-generated method stub
}
@Override
public void add(int field, int amount) {
// TODO Auto-generated method stub
}
@Override
public void roll(int field, boolean up) {
// TODO Auto-generated method stub
}
@Override
public int getMinimum(int field) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getMaximum(int field) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getGreatestMinimum(int field) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getLeastMaximum(int field) {
// TODO Auto-generated method stub
return 0;
}
}
显然,这并不是一个好的方法;
查文档发现 Calendar 类中含有一些静态的方法,例如 Calendar.getInstance() ,即可以直接通过调用该方法获取一个 Calendar 对象:
package top.sharehome.Bag;
import java.util.Calendar;
public class Demo {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
}
}
查文档又发现 Calendar 对象中包含着一个可以被操作的 Date 对象,可以通过 getTime() 来获取该 Date 对象:
package top.sharehome.Bag;
import java.util.Calendar;
import java.util.Date;
public class Demo {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
Date time = c.getTime();
}
}
Calendar字段
字段摘要 | |
---|---|
static int | ALL_STYLES 指示所有风格名称的 getDisplayNames 的风格说明符,比如 “January” 和 “Jan”。 |
static int | AM 指示从午夜到中午之前这段时间的 AM_PM 字段值。 |
static int | AM_PM get 和 set 的字段数字,指示 HOUR 是在中午之前还是在中午之后。 |
static int | APRIL 指示在格里高利历和罗马儒略历中一年中第四个月的 MONTH 字段值。 |
protected boolean | areFieldsSet 如果 fields[] 与当前的设置时间同步,则返回 true。 |
static int | AUGUST 指示在格里高利历和罗马儒略历中一年中第八个月的 MONTH 字段值。 |
static int | DATE get 和 set 的字段数字,指示一个月中的某天。 |
static int | DAY_OF_MONTH get 和 set 的字段数字,指示一个月中的某天。 |
static int | DAY_OF_WEEK get 和 set 的字段数字,指示一个星期中的某天。 |
static int | DAY_OF_WEEK_IN_MONTH get 和 set 的字段数字,指示当前月中的第几个星期。 |
static int | DAY_OF_YEAR get 和 set 的字段数字,指示当前年中的天数。 |
static int | DECEMBER 指示在格里高利历和罗马儒略历中一年中第十二个月的 MONTH 字段值。 |
static int | DST_OFFSET get 和 set 的字段数字,以毫秒为单位指示夏令时的偏移量。 |
static int | ERA 指示年代的 get 和 set 的字段数字,比如罗马儒略历中的 AD 或 BC。 |
static int | FEBRUARY 指示在格里高利历和罗马儒略历中一年中第二个月的 MONTH 字段值。 |
static int | FIELD_COUNT get 和 set 可识别的不同字段的数量。 |
protected int[] | fields 此日历当前设置时间的日历字段值。 |
static int | FRIDAY 指示 Friday 的 DAY_OF_WEEK 字段值。 |
static int | HOUR get 和 set 的字段数字,指示上午或下午的小时。 |
static int | HOUR_OF_DAY get 和 set 的字段数字,指示一天中的小时。 |
protected boolean[] | isSet 通知是否设置了该日历某一指定日历字段的标志。 |
protected boolean | isTimeSet 如果 time 值是一个有效值,则返回 true。 |
static int | JANUARY 指示在格里高利历和罗马儒略历中一年中第一个月的 MONTH 字段值。 |
static int | JULY 指示在格里高利历和罗马儒略历中一年中第七个月的 MONTH 字段值。 |
static int | JUNE 指示在格里高利历和罗马儒略历中一年中第六个月的 MONTH 字段值。 |
static int | LONG 指示长名称的 getDisplayName 和 getDisplayNames 的风格说明符,比如 “January”。 |
static int | MARCH 指示在格里高利历和罗马儒略历中一年中第三个月的 MONTH 字段值。 |
static int | MAY 指示在格里高利历和罗马儒略历中一年中第五个月的 MONTH 字段值。 |
static int | MILLISECOND get 和 set 的字段数字,指示一秒中的毫秒。 |
static int | MINUTE get 和 set 的字段数字,指示一小时中的分钟。 |
static int | MONDAY 指示 Monday 的 DAY_OF_WEEK 字段值。 |
static int | MONTH 指示月份的 get 和 set 的字段数字。 |
static int | NOVEMBER 指示在格里高利历和罗马儒略历中一年中第十一个月的 MONTH 字段值。 |
static int | OCTOBER 指示在格里高利历和罗马儒略历中一年中第十个月的 MONTH 字段值。 |
static int | PM 指示从中午到午夜之前这段时间的 AM_PM 字段值。 |
static int | SATURDAY 指示 Saturday 的 DAY_OF_WEEK 字段值。 |
static int | SECOND get 和 set 的字段数字,指示一分钟中的秒。 |
static int | SEPTEMBER 指示在格里高利历和罗马儒略历中一年中第九个月的 MONTH 字段值。 |
static int | SHORT 指示短名称的 getDisplayName 和 getDisplayNames 的风格说明符,比如 “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 get 和 set 的字段数字,指示当前月中的星期数。 |
static int | WEEK_OF_YEAR get 和 set 的字段数字,指示当前年中的星期数。 |
static int | YEAR 指示年的 get 和 set 的字段数字。 |
static int | ZONE_OFFSET] get 和 set 的字段数字,以毫秒为单位指示距 GMT 的大致偏移量。 |
常用方法
add(int field, int amount)
根据日历的规则,为给定的日历字段添加或减去指定的时间量;
package top.sharehome.Bag;
import java.util.Calendar;
import java.util.Date;
public class Demo {
public static void main(String[] args) {
Date d = new Date();
System.out.println("现在时间是"+d);
Calendar c = Calendar.getInstance();
c.add(Calendar.DAY_OF_MONTH, -10);
c.add(Calendar.MONTH, 2);
System.out.println("我在今天的基础上减了十天后再往后推了2个月!");
Date time = c.getTime();
System.out.println(time);
}
}
打印效果如下:
set()
给日历设定数值;
方法的重载 | |
---|---|
void | set(int field, int value) 将给定的日历字段设置为给定值。 |
void | set(int year, int month, int date) 设置日历字段 YEAR 、MONTH 和 DAY_OF_MONTH 的值。 |
void | set(int year, int month, int date, int hourOfDay, int minute) 设置日历字段 YEAR 、MONTH 、DAY_OF_MONTH 、HOUR_OF_DAY 和 MINUTE 的值。 |
void | set(int year, int month, int date, int hourOfDay, int minute, int second) 设置字段 YEAR 、MONTH 、DAY_OF_MONTH 、HOUR 、MINUTE 和 SECOND 的值。 |
//不只是上面这样的代入方式,还可以是单个指明参数
package top.sharehome.Bag;
import java.util.Calendar;
import java.util.Date;
public class Demo {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR,2012);
c.set(Calendar.MONTH, 0);
c.set(Calendar.DATE, 1);
c.set(Calendar.HOUR_OF_DAY, 8);
c.set(Calendar.MINUTE, 23);
c.set(Calendar.SECOND, 12);
Date time = c.getTime();
System.out.println(time);
}
}
MOUTH的值是从 0 算起的,即 0 ~ 11 代表着十二个月
打印效果如下:
示例如下:
我们想要获得一个 2018 年 7 月 7 日的 Date 数据;
方法一:解析;
package top.sharehome.Bag;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo {
public static void main(String[] args) throws ParseException {
String str = "2018年7月7日";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
Date parse = sdf.parse(str);
System.out.println(parse);
}
}
打印效果如下:
方法二:Calendar 类;
package top.sharehome.Bag;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Demo {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
c.set(2018,6,7,0,0,0);
Date time = c.getTime();
System.out.println(time);
}
}
打印效果如下:
LocalDate本地日期
- 获取该类的对象,静态方法
- static LocalDate now() 获取LocalDate的对象,跟随操作系统
- static LocalDate of() 获取LocalDate的对象,自己设置日期
- of方法中传递年月日 of(int year,int month,int day)
/**
* LocalDate的静态方法获取对象
*/
public static void getInstance(){
//静态方法now()
LocalDate localDate = LocalDate.now();
System.out.println("localDate = " + localDate);
//静态方法of()设置日期
LocalDate of = LocalDate.of(2022,5,10);
System.out.println("of = " + of);
}
- 获取日期字段的方法 : 名字是get开头
- int getYear() 获取年份
- int getDayOfMonth()返回月中的天数
- int getMonthValue() 返回月份
/**
* LocalDate类的方法 getXXX()获取日期字段
*/
public static void get(){
LocalDate localDate = LocalDate.now();
//获取年份
int year = localDate.getYear();
//获取月份
int monthValue = localDate.getMonthValue();
//获取天数
int dayOfMonth = localDate.getDayOfMonth();
System.out.println("year = " + year);
System.out.println("monthValue = " + monthValue);
System.out.println("dayOfMonth = " + dayOfMonth);
}
-
设置日期字段的方法 : 名字是with开头
-
LocalDate withYear(int year)设置年份
-
LocalDate withMonth(int month)设置月份
-
LocalDate withDayOfMonth(int day)设置月中的天数
-
LocalDate对象是不可比对象,设置方法with开头,返回新的LocalDate对象
-
/**
* LocalDate类的方法 withXXX()设置日期字段
*/
public static void with(){
LocalDate localDate = LocalDate.now();
System.out.println("localDate = " + localDate);
//设置年,月,日
//方法调用链
LocalDate newLocal = localDate.withYear(2025).withMonth(10).withDayOfMonth(25);
System.out.println("newLocal = " + newLocal);
}
- 设置日期字段的偏移量, 方法名plus开头,向后偏移
- 设置日期字段的偏移量, 方法名minus开头,向前偏移
/**
* LocalDate类的方法 minusXXX()设置日期字段的偏移量,向前
*/
public static void minus() {
LocalDate localDate = LocalDate.now();
//月份偏移10个月
LocalDate minusMonths = localDate.minusMonths(10);
System.out.println("minusMonths = " + minusMonths);
}
/**
* LocalDate类的方法 plusXXX()设置日期字段的偏移量,向后
*/
public static void plus(){
LocalDate localDate = LocalDate.now();
//月份偏移10个月
LocalDate plusMonths = localDate.plusMonths(10);
System.out.println("plusMonths = " + plusMonths);
}
Period和Duration类
Period计算日期之间的偏差
- static Period between(LocalDate d1,LocalDate d2)计算两个日期之间的差值.
- 计算出两个日期相差的天数,月数,年数
public static void between(){
//获取2个对象,LocalDate
LocalDate d1 = LocalDate.now(); // 2021-4-13
LocalDate d2 = LocalDate.of(2022,4,13); // 2022-6-15
//Period静态方法计算
Period period = Period.between(d1, d2);
//period非静态方法,获取计算的结果
int years = period.getYears();
System.out.println("相差的年:"+years);
int months = period.getMonths();
System.out.println("相差的月:"+months);
int days = period.getDays();
System.out.println("相差的天:"+days);
}
Duration计算时间之间的偏差
- static Period between(Temporal d1,Temporal d2)计算两个日期之间的差值.
public static void between(){
LocalDateTime d1 = LocalDateTime.now();
LocalDateTime d2 = LocalDateTime.of(2021,5,13,15,32,20);
// Duration静态方法进行计算对比
Duration duration = Duration.between(d1, d2);
// Duration类的对象,获取计算的结果
long minutes = duration.toMinutes();
System.out.println("相差分钟:" + minutes);
long days = duration.toDays();
System.out.println("相差天数:"+days);
long millis = duration.toMillis();
System.out.println("相差秒:" + millis);
long hours = duration.toHours();
System.out.println("相差小时:"+hours);
}
DateTimeFormatter
JDK8中的日期格式化对象 : java.time.format包
- static DateTimeFormatter ofPattern(String str)自定义的格式
- String format(TemporalAccessor t)日期或者时间的格式化
- TemporalAccessor parse(String s)字符串解析为日期对象
/**
* 方法parse,字符串转日期
*/
public static void parse(){
//静态方法,传递日期格式,返回本类的对象
DateTimeFormatter dateTimeFormatter =
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String str = "2021-04-13 15:55:55";
//dateTimeFormatter调用方法parse转换
//返回接口类型,接口是LocalDate,LocalDateTime 都实现了该接口
TemporalAccessor temporalAccessor = dateTimeFormatter.parse(str);
//System.out.println(temporalAccessor);
LocalDateTime localDateTime = LocalDateTime.from(temporalAccessor);
System.out.println(localDateTime);
}
/**
* 方法format格式化
*
*/
public static void format(){
//静态方法,传递日期格式,返回本类的对象
DateTimeFormatter dateTimeFormatter =
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//dateTimeFormatter对象调用方法format
String format = dateTimeFormatter.format(LocalDateTime.now());
System.out.println(format);
}