Java8 日期处理有了新的API,基于ISO标准日历系统,并且java.time包下的所有类都是不可变类型而且线程安全。之前的java.util.Date是可变类型,其中SimpleDateFormat 也是线程不安全的类。
推荐使用 Instant 代替 Date , LocalDateTime 代替 Calendar ,DateTimeFormatter 代替 SimpleDateFormat。
日期类介绍
类名称 | 描述 |
lnstant | 时间戳 |
Duration | 持续时间 |
LocalDate | 日期,如:2021-02-15 |
LocalTime | 时间,如:18:12:18 |
LocalDateTime | 日期和时间,如:2021-02-15 18:12:18 |
Period | 时间段 |
ZoneOffset | 时区偏移量,如:+8:00 |
ZonedDateTime | 带时区的时间 |
Clock | 时钟 |
下面我们看下具体例子:
1、获取当前日期(今天)
注意:LocalDate.now() 只有日期,不包含时间。
public class Test {
public static void main(String[] args){
LocalDate today = LocalDate.now();
System.out.println("今天的日期:"+today);
}
}
运行结果:
今天的日期:2021-02-15
2、获取当前时间
注意:LocalTime.now() 只有时间,不含有日期。
public class Test {
public static void main(String[] args){
LocalTime time = LocalTime.now();
System.out.println("当前时间:"+time);
}
}
运行结果:
当前时间:11:55:15.045
3、获取当前的时间戳
public class Test {
public static void main(String[] args){
Instant timestamp = Instant.now();
System.out.println("当前时间戳: " + timestamp.toEpochMilli());
}
}
4、获取年、月、日
public class Test {
public static void main(String[] args){
LocalDate today = LocalDate.now();
System.out.println("年:"+ today.getYear());
System.out.println("月:"+ today.getMonthValue());
System.out.println("日:"+ today.getDayOfMonth());
}
}
5、自定义日期
public class Test {
public static void main(String[] args){
LocalDate date = LocalDate.of(2018,8,6);
System.out.println("自定义日期:"+date);
}
}
运行结果:
自定义日期:2018-08-06
6、字符串和日期类型互转
public class Test {
public static void main(String[] args){
LocalDateTime date = LocalDateTime.now();
DateTimeFormatter format1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String str = date.format(format1);
System.out.println("日期转换为字符串:"+str);
LocalDateTime date1 = LocalDateTime.parse(str,format1);
System.out.println("字符串转换为日期:"+date1);
}
}
运行结果:
日期转换为字符串:2021-02-15 12:06:24
字符串转换为日期:2021-02-15T12:06:24
7、Clock时钟类
public class Test {
public static void main(String[] args){
Clock defaultClock = Clock.systemDefaultZone();
System.out.println("Clock 当前时间戳: " + defaultClock.millis());
}
}