package DateAPI; import org.junit.Test; import java.text.SimpleDateFormat; import java.time.*; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoField; import java.time.temporal.ChronoUnit; import java.util.Date; import java.util.Set; public class DateTest { @Test @SuppressWarnings("all") public void test01() { //LocalDate返回的只有年月日 LocalDate date = LocalDate.of(2022, 12, 20); System.out.println(date.getYear());//年份 Month month = date.getMonth();//月份 System.out.println(month); int day = date.getDayOfMonth();//一个月中的第几天 System.out.println(day); DayOfWeek dayofweek = date.getDayOfWeek();//星期几 System.out.println(dayofweek); boolean leapyear = date.isLeapYear();//判断是否是闰年 System.out.println(leapyear); DateTimeFormatter daf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime time4 = LocalDateTime.of(1212, 12, 12, 12, 12, 12); System.out.println(time4.format(daf)); } //时钟Clock; //Clock类提供了访问当前日期和时间的方法,Clock是时区敏感的,可以用来取代 //System.currentTimeMillis() 来获取当前的微秒数。某一个特定的时间点也可以使用Instant类来表示, //Instant类也可以用来创建老的java.util.Date对象。 @Test public void test02() { //获取当前时区 Clock clock = Clock.systemDefaultZone(); System.out.println(clock); //返回毫秒数 long millis = System.currentTimeMillis(); System.out.println(millis); //返回毫秒数 long mil = clock.millis(); System.out.println(mil); //Instant创建Date对象 Instant istant = clock.instant(); Date from = Date.from(istant); System.out.printf("%tF,%<tT", from); } //Timezones时区 @Test public void test03() { //获取所有时区 Set<String> zoneids = ZoneId.getAvailableZoneIds(); System.out.println(zoneids); ZoneId of = ZoneId.of("Asia/Shanghai"); //获取时区 System.out.println(ZoneOffset.systemDefault()); System.out.println(of); System.out.println(of.getRules()); } //@LocalTime本地时间 @Test public void test4() { //获取指定时区的当前时间 ZoneId zoneid = ZoneId.of("Asia/Aden");//亚丁湾 LocalTime localtime = LocalTime.now(zoneid); System.out.println(localtime); //获取当前时间 LocalTime time = LocalTime.now(); System.out.println(time); //获取指定时间及时,分,秒 LocalTime time2 = LocalTime.of(12, 59, 59); int hour = time2.getHour(); int minute = time2.getMinute(); int second = time2.getSecond(); System.out.printf("%s小时%s分%s秒%n", hour, minute, second); //获取两个时间之间的时间差 LocalTime start = LocalTime.of(12, 59, 59); LocalTime end = LocalTime.of(6, 59, 50); //两个事件之间相差多少分 long betweentime = ChronoUnit.MINUTES.between(start, end); //日期格式化 LocalTime time3 = LocalTime.of(12, 24, 12); DateTimeFormatter df1 = DateTimeFormatter.ofPattern("HH时mm分ss秒"); System.out.println(time3.format(df1)); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); } //LocalDateTime @Test public void test5() { LocalDateTime ldt = LocalDateTime.of(2012, 12, 12, 12, 21, 12); //可以与LocalDate进行同样的操作 //获取当前是该天的多少分 long minuteofday = ldt.getLong(ChronoField.MINUTE_OF_DAY); System.out.println(minuteofday); //获取秒数 long second = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")); System.out.println(second); //获取毫秒数 //toEpochMilli()将时间转换成毫秒数 long millsecond = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli(); //LocalDateTime转化成Date //转换步骤 //1,将LocalDateTime获得的时间转换成毫秒数 //2,创建一个新的Date对象 Date d1 = new Date(millsecond); System.out.println(d1); System.out.println(d1.getTime()); System.out.println(System.currentTimeMillis()); //将Date转换成LocalDateTime Date d2 = new Date(); LocalDateTime db1 = d2.toInstant().atOffset(ZoneOffset.of("+8")).toLocalDateTime(); System.out.println("db1" + db1); //将LocalDateTime转化成String DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String datetime = LocalDateTime.now(ZoneId.of("+8")).format(dtf); System.out.println(datetime); //将字符串转换成LocalDateTime; String datetime2 = "2022-02-16 11:11:58"; DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime datetime3 = LocalDateTime.parse(datetime2, dtf2); System.out.println(datetime3); } //Instant @Test public void test6() { Instant i = Instant.now(); System.out.println(i); //获取秒 System.out.println(i.getEpochSecond()); //毫秒 System.out.println(System.currentTimeMillis()); //Date转换成Instant System.out.printf("%tF %<tT %n", i.getEpochSecond() * 1000); //Instant转换成Date; Date i2=Date.from(i); System.out.printf("%tF %<tT %n",i2); } }
Java 8日期API的简单使用
最新推荐文章于 2024-09-08 10:40:56 发布