第一代日期类
指Date
和SimpleDateFormat
。前者获取时间,后者格式化时间形式。这两种类已经过时,但在开发中仍然可能用到。
构造器
Date();
//可以放一个时间戳,例如System.currentTimeMillis()
Date(long time);
//字符串参数应该为特定的日期格式,例如"yyyy-MM-dd"
SimpleDateFormat(String s);
具体的日期设置格式可参看下图
使用SimpleDateFormat
对象就可以格式化日期,也可以将一个表示时间的字符串转换为Date
。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String now = sdf.format(new Date());
Date nowtime = sdf.parse(now);
第二代日期类
指Calendar
类。本身是一个抽象类,这个类的构造器是受保护的,因此Calendar
类提供了获取实例的方法。
代码演示如何使用
public class MyCalendar {
public static void main(String[] args) {
Calendar now = Calendar.getInstance();
//这里直接打印now也可以,但显示一堆东西
System.out.println(now.get(Calendar.YEAR));
//从0开始计算
System.out.println(now.get(Calendar.MONTH)+1);
System.out.println(now.get(Calendar.DAY_OF_MONTH));
System.out.println(now.get(Calendar.HOUR));
System.out.println(now.get(Calendar.HOUR_OF_DAY));
System.out.println(now.get(Calendar.MINUTE));
System.out.println(now.get(Calendar.SECOND));
}
}
注意:没有专门的格式Calendar
的方法,需要程序员手动获取自动并且拼接。
第三代日期类
上述两种类一般不建议使用,因为它们的值可以被修改,并且线程不安全。而且Date
从1900年开始计算。它们也不能处理闰秒(每隔两天,多出一秒)
Java 8新增加了三个类,它们都有各自的分工
LocalDate
表示日期LocalTime
表示时间LocalDateTime
表示日期时间
LocalDateTime
属于final类,无法被继承,构造器私有,只能使用静态方法创建对象。实际上,LocalDateTime
的构造器包含了LocalDate
,LocalTime
两个参数。
创建对象的静态方法
//获取系统时间
LocalDateTime.now();
//自定义日期
LocalDateTime.of();
获取日期时间各个组成部分的方式
依然使用get系列方法获得
获取对象副本
使用以with开头的方法
往前或往后计算日期
使用对应的plus或minus方法即可
LocalDateTime
、LocalDate
、LocalTime
的使用方法几乎相同,不一一赘述。
DateTimeFormatter
这个类可以对上述三种类的对象的表现形式格式化
使用方法
- 使用静态方法ofPattern(String s)创建DateTimeFormatter对象,然后使用这个对象的format方法对LocalDateTime对象格式化。
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
System.out.println(dtf.format(now));
//2022-11-19 11:00:00
- 使用预定义的静态对象,依然使用format进行格式化
LocalDateTime now = LocalDateTime.now();
System.out.println(DateTimeFormatter.ISO_LOCAL_DATE.format(now));
//2022-11-19
Instant
Instant
是一个时间戳,可以将Instant
转换为Date
,也可以将Date
转换为Instant
该类为final类,不可继承,并且构造器私有。
案例演示
Instant instant = Instant.now();
System.out.println(instant);
Date date = Date.from(instant);
System.out.println(date);
Instant toInstant = date.toInstant();
标签:Java,System,日期,LocalDateTime,println,Calendar,now,out
From: https://www.cnblogs.com/run-bit/p/16902043.html