- 世界标准时间UTC — — 2022-04-18T09:09:13.607
- 格林尼治标准时间GMT — — 18 Apr 2022 08:52:59 GMT
- 北京时间CST — — Mon Apr 18 16:54:35 CST 2022
日期时间、时间格式化、日历
与日期时间相关的类:
Date
JDK8以后新增的类有:
Clock、 Duration、 Instant
LocalDate、 LocalTime、 LocalDateTime及其相互转换
ZonedDateTime、 ZoneId
Year、 Month、 YearMonth、 MonthDay、 DayOfWeek
时间格式化DateFormat
DateFormat通过成员方法format和parse完成Date和String之间的转换,只是DateFormat是抽象类,通常通过它的子类SimpleDateFormat完成。
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
dateFormat.format(new Date()); //String: DateFormat
dateFormat.parse("2022年01月20日") //Thu Jan 20 00:00:00 CST 2022 //Date:DateFormat
日历Calendar类
Calendar出现后替换了许多Date的方法,该类将可能用到的时间信息封装为静态成员变量。日历类方便获取各个时间属性。
//静态成员变量
public final static int YEAR = 1;
SECOND = 13;
DAY_OF_WEEK = 7;
AM_PM = 9;
Calendar cal = Calendar.getInstance();
LocalDateTime与LocalDate、LocalTime、Date
LocalDateTime转LocalDate、LocalTime
LocalDateTime.now(); // 2022-04-26T14:04:53.172
LocalDate localDate = LocalDateTime.now().toLocalDate(); // 2022-04-26
LocalTime localTime = LocalDateTime.now().toLocalTime(); // 14:04:53.172
LocalDateTime转Date
// Tue Apr 26 14:04:53 CST 2022
Date date = Date.form(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant());
LocalDate转LocalDateTime
LocalDateTime localDateTime = LocalDate.now().atStartOfDay();
LocalDateTime localDateTime = LocalDate.now().atTime(LocalTime.now());
LocalDate转Date:LocalDate先转LocalDateTime再转Date
Date date = Date.form(LocalDate.now().atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
Date转LocalDate:先转ZoneDateTime再转LocalDateTime
LocalDateTime localDateTime = new Date().toInstant().atZone(zoneId).toLocalDateTime();