Java 8 之 新日期时间API
Java 8 之 新日期时间API
1.系统时间
1.LocalDate date = LocalDate.now();
System.out.println(date.getYear() + "/" + date.getMonthValue() + "/" + date.getDayOfMonth()); // 2020/3/13
2.LocalTime time = LocalTime.now();
System.out.println(time.getHour() + ":" + time.getMinute() + ":" + time.getSecond()); // 10:47:22
// ***没有提供 getMillis() 方法
System.out.println(time.get(ChronoField.MILLI_OF_SECOND)); // 859
3.LocalDateTime dateTime = LocalDateTime.now();
System.out.println(dateTime.getYear() + "/" + dateTime.getMonthValue() + "/" + dateTime.getDayOfMonth()+ " " + dateTime.getHour() + ":" + dateTime.getMinute() + ":" + dateTime.getSecond()); // 2020/3/13 10:47:22
4.Clock clock = Clock.systemDefaultZone();
System.out.println(clock.millis()); // 这个函数是用于获得时间戳的,从1970年到现在的毫秒数
2.接下来的时间格式转换就是围绕3个函数来转,LocalDate , LocalTime , 以及LocalDateTime,很简单容易记
package cn.ycl.test;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
public class test2 {
public static void main(String[] args) {// 2020,3,13
// TODO Auto-generated method stub
// 将日期字符串手动转换为日期格式
LocalDate myDate = LocalDate.of(2020, 3, 13);
System.out.println(myDate);// 2020-03-13
System.out.println(myDate.getYear() + "/" + myDate.getMonthValue() + "/" + myDate.getDayOfMonth()); // 2020/3/13
//获得特定时间的星期
LocalDate independenceDay = LocalDate.of(2020, 3, 13);
DayOfWeek dayOfWeek = independenceDay.getDayOfWeek();
System.out.println(dayOfWeek); // FRIDAY
// 将时间字符串手动转换为时间格式
LocalTime myTime = LocalTime.of(10, 30, 45);
System.out.println(myTime.getHour() + ":" + myTime.getMinute() + ":" + myTime.getSecond()); // 10:30:45
// 将时间日期字符串手动转换为时间日期格式
LocalDateTime myDateTime1 = LocalDateTime.of(2020, 3, 13, 10, 30, 45);
System.out.println(myDateTime1);//2020-03-13T10:30:45,直接输出的话会多了一个T,很奇怪
System.out.println(myDateTime1.getYear() + "/" + myDateTime1.getMonthValue() + "/" + myDateTime1.getDayOfMonth()
+ " " + myDateTime1.getHour() + ":" + myDateTime1.getMinute() + ":" + myDateTime1.getSecond());
// 2020/3/13 10:30:45
LocalDateTime myDateTime2 = LocalDateTime.of(myDate, myTime);
System.out.println(myDateTime2);//2020-03-13T10:30:45
System.out.println(myDateTime2.getYear() + "/" + myDateTime2.getMonthValue() + "/" + myDateTime2.getDayOfMonth()
+ " " + myDateTime2.getHour() + ":" + myDateTime2.getMinute() + ":" + myDateTime2.getSecond()); // 2020/3/13 10:30:45
}
}
3.格式化(感觉这部分应该会用的挺多的)
Java代码
1.// Date -> String
LocalDate formatDate1 = LocalDate.of(2013, 12, 4);
String dateString = formatDate1.format(DateTimeFormatter.ofPattern("yyyy/MM/dd"));
System.out.println(dateString); // 2013/12/04
2.// String -> Date //感觉这部分应该会用的挺多的
LocalDate formatDate2 = LocalDate.parse("2013/12/04", DateTimeFormatter.ofPattern("yyyy/MM/dd"));
System.out.println(formatDate2); // 2013-12-04
4.日期转换
Java代码
1.// LocalDate -> LocalDateTime
LocalDate changeDate1 = LocalDate.of(2013, 12, 4);
LocalDateTime changeDateTime1 = changeDate1.atTime(10, 30, 45);
System.out.println(changeDateTime1); // 2013-12-04T10:30:45
2.// LocalTime -> LocalDateTime
LocalTime time2 = LocalTime.of(10, 30, 45);
LocalDateTime dateTime2 = time2.atDate(LocalDate.of(2013, 12, 4));
System.out.println(dateTime2); // 2013-12-04T10:30:45
3.// LocalDateTime -> LocalDate, LocalTime
LocalDateTime dateTime3 = LocalDateTime.of(2013, 12, 4, 10, 30, 45);
LocalDate date3 = dateTime3.toLocalDate();
System.out.println(date3); // 2013-12-04
LocalTime time3 = dateTime3.toLocalTime();
System.out.println(time3); // 10:30:45
5.日期加减(感觉这部分应该会用的挺多的)
LocalDate today = LocalDate.now();
LocalDate twoDaysAfter = today.plusDays(2L); // 2天后
LocalDate threeDaysBefore = today.minusDays(3L); // 3天前
LocalDate oneYearsAfter = today.plus(1L, ChronoUnit.YEARS);// 1年后
LocalDate twoWeeksBefore = today.minus(2L, ChronoUnit.WEEKS); // 2周前
LocalDate newDate = LocalDate.now().plus(Period.of(3, 2, 1)); // 3年2月1天后
6.计算间隔(感觉这部分应该会用的挺多的)
LocalDateTime d1 = LocalDateTime.of(2013, 11, 4, 10, 30, 45);
LocalDateTime d2 = LocalDateTime.of(2013, 12, 4, 10, 30, 45);
Duration duration = Duration.between(d1, d2);
System.out.println(duration.toDays()); // 30
7.日期比较(感觉这部分应该会用的挺多的)
LocalDate compDate1 = LocalDate.of(2013, 12, 4);
LocalDate compDate2 = LocalDate.of(2013, 11, 4);
System.out.println(compDate1.isBefore(compDate2)); // false
System.out.println(compDate1.compareTo(compDate2)); // 1
8.和java.util.Date的转换
1.// LocalDateTime -> Date
LocalDateTime cDateTime = LocalDateTime.now();
Instant instant = cDateTime.atZone(ZoneId.systemDefault()).toInstant();
Date cDate = Date.from(instant);
System.out.println(cDate); // Fri Mar 21 16:39:22 CST 2014
2.// Date -> LocalDateTime
Date date2 = new Date();
Instant instant2 = date2.toInstant();
LocalDateTime dateTimeFromDate = LocalDateTime.ofInstant(instant2, ZoneOffset.systemDefault());
System.out.println(dateTimeFromDate); // 2014-03-21T16:39:22.890
// Calendar -> LocalDateTime
Calendar cal = Calendar.getInstance();
LocalDateTime dateTimeFromCal = LocalDateTime.ofInstant(cal.toInstant(), ZoneOffset.systemDefault());
System.out.println(dateTimeFromCal); // 2014-03-21T16:39:22.890
此博客大部分是借鉴了:https://www.iteye.com/blog/rensanning-2034622
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!