欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【java基础】简单了解LocalDateTime

程序员文章站 2024-03-18 11:25:58
...

【java基础】简单了解LocalDateTime

Java8推出的三个时间类型:LocalDateTime;LocalDate;LocalTime。

具体操作

  1. 获取时间
//获取当前时间
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime time = LocalDateTime.now();
String mon = df.format(time);
System.out.println(mon);
//2019-04-17 15:49:00

/*
可以跑一下这注释代码
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime time = LocalDateTime.now().plusMonths(-2).plusDays(-1);
String mon = df.format(time);
System.out.println(mon);
*/
  1. 字符串转换为时间(LocalDateTime)
//字符串转时间
String dateTimeStr = "9102-01-01 01:01:01";
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse(dateTimeStr, df);
System.out.println(dateTime);

控制台结果:
9102-01-01T01:01:01
  1. LocalDateTime获取毫秒数(东8区,北京时间)
//获取秒数
Long second = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8"));
//获取毫秒数
Long milliSecond = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();

  1. LocalDateTime与Date
//Date转换为LocalDateTime
public static LocalDateTime convertDateToLDT(Date date) {
    return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
}

//LocalDateTime转换为Date
public static Date convertLDTToDate(LocalDateTime time) {
    return Date.from(time.atZone(ZoneId.systemDefault()).toInstant());
}
  1. 公司一般都有自己独有的工具类。

另外提示(来自阿里巴巴java开发手册)

SimpleDateFormat 是线程不安全的类,一般不要定义为 static 变量,如果定义为static,必须加锁,或者使用 DateUtils 工具类。
正例:注意线程安全,使用 DateUtils。亦推荐如下处理:

private static final ThreadLocal<DateFormat> df = new ThreadLocal<DateFormat>() { 
	@Override 
	protected DateFormat initialValue() { 
	return new SimpleDateFormat("yyyy-MM-dd"); 
	} 
}; 

说明:如果是 JDK8 的应用,可以使用 Instant 代替 Date,LocalDateTime 代替 Calendar,
DateTimeFormatter 代替 SimpleDateFormat,
官方给出的解释:simple beautiful strong immutable thread-safe。

直接将以前做的笔记复制过来了
有错误之处,望指出
我没有整合过LocalDateTime的工具类,因为我公司一直都是用Date