比较常用的LocalDateTime### 说明
- ISO-8601日历系统中没有时区信息的日期时间
- 构造出的实例,是一个不可变的,线程安全的日期时间,一般的表现格式为"year-month-day-hour-minute-second",也有一些其它字段,比如day-of-year,day-of-week,week-of-year
类的基础结构
public final class LocalDateTime {
/**
* The date part.
*/
private final LocalDate date;
/**
* The time part.
*/
private final LocalTime time;
/**
* 返回系统当前时间
*/
public static LocalDateTime now() {
return now(Clock.systemDefaultZone());
}
/**
* 从一个特别的clock中获取时间
*/
public static LocalDateTime now(Clock clock) {
Objects.requireNonNull(clock, "clock");
final Instant now = clock.instant(); // called once
ZoneOffset offset = clock.getZone().getRules().getOffset(now);
return ofEpochSecond(now.getEpochSecond(), now.getNano(), offset);
}
}
可以看出,实际上LocalDate
的表示,是通过LocalDate
,LocalTime
实现的。
另外,now()
实例化时使用了三个数据:Instant,地区偏移时间,now.getNano()。所以LocalDateTime
应该是表示的是系统当前的时间,虽然不包含时区信息,但是实例化的时候已经把时区的偏移加入了计算逻辑。
获取系统当前时间
public static void main(String[] args) {
LocalDateTime dateTime = LocalDateTime.now();
System.out.println(dateTime.toString());
}
// 输出:2019-08-13T15:12:05.224
时间与字符串相互转换
String dateStr = "2020-09-01 03:00:33";
// 字符串转换成LocalDateTime
LocalDateTime strToDate = LocalDateTime.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println(strToDate);
// LocalDateTime转换成字符串
LocalDateTime dateTime = LocalDateTime.now();
System.out.println(dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd__HH:mm:ss")));
//===========
//输出:
//2020-09-01T03:00:33
//2019-08-13__15:43:04
//===========
网友评论