Java1.8中LocalDate方法使用總結(jié)
前言:
由于之前想要用Java實(shí)現(xiàn)日歷的打印以及找到相應(yīng)的尋找休息日,所以在這方面尋找相應(yīng)的資料并進(jìn)行總結(jié)歸納
Java中1.8之前有date類和calendar類。其中date類到了1.8大部分的方法被棄用了說明這些方法都有很大的缺陷,而且date類如果不格式化可讀性十分差,所以就需要格式化,而格式化使用simpledateformat來進(jìn)行操作線程不安全。而calendar類是一個共享變量,而且沒有做線程不安全,當(dāng)多個線程同時使用simpledateformat調(diào)用format方法時,多個線程會同時調(diào)用calendar.setTime方法,而導(dǎo)致的后果時time值一直被修改從而返回的格式化的時間是錯誤的。而且simpledateformat方法中format和parse方法都是線程不安全的。
Java1.8之后出現(xiàn)了localdate,localdatetime,localtime這些類,而這些類使用了final來修飾,使得這些類是不可變的,一旦實(shí)例化,值就固定了,有點(diǎn)類似于String類,所以這些類都是線程安全的。
localdate是針對于年月日的,localtime是針對于時分秒,localdatetime是針對于年月日時分秒
localDate時間創(chuàng)建方式
/** * localDate時間創(chuàng)建方式 * 獲取當(dāng)前時間 */ @Test public void localDateCreate() { LocalDate yyyyMMdd = LocalDate.now(); LocalTime HHmmssSSS = LocalTime.now(); LocalDateTime yyyyMMddHHmmssSSS = LocalDateTime.now(); System.out.println("年月日: " + yyyyMMdd); System.out.println("時分秒毫秒: " + HHmmssSSS); System.out.println("年月日時分秒毫秒: " + yyyyMMddHHmmssSSS); //輸出: // 年月日: 2020-10-16 // 時分秒毫秒: 09:55:49.448 // 年月日時分秒毫秒: 2020-10-16T09:55:49.448 }
localDate 設(shè)值自定義日期 根據(jù)指定日期/時間創(chuàng)建對象
/** * localDate 設(shè)值自定義日期 * 根據(jù)指定日期/時間創(chuàng)建對象 */ @Test public void setDate() { LocalDate yyyyMMdd = LocalDate.of(2020, 10, 15); LocalTime HHmmssSSS = LocalTime.of(10, 10, 10); LocalDateTime yyyyMMddHHmmssSSS = LocalDateTime.of(2020, 10, 15, 10, 10); System.out.println("自定義的年月日: " + yyyyMMdd); System.out.println("自定義時分秒毫秒: " + HHmmssSSS); System.out.println("自定義年月日時分秒毫秒: " + yyyyMMddHHmmssSSS); //輸出: // 自定義的年月日: 2020-10-15 // 自定義時分秒毫秒: 10:10:10 // 自定義年月日時分秒毫秒: 2020-10-15T10:10 }
日期時間的加減
/** * 日期時間的加減 */ @Test public void lessOrAddDate() { LocalDate yyyyMMdd = LocalDate.now(); LocalDate addOneDay = yyyyMMdd.plusDays(1L); //添加一日 LocalDate addOneMonths = yyyyMMdd.plusMonths(1L);//添加一月 LocalDate addOneYears = yyyyMMdd.plusYears(1L);//添加一年 LocalDate addOneWeeks = yyyyMMdd.plusWeeks(1L);//添加一周 LocalDate delOneDay = yyyyMMdd.minusDays(1L); //減去一日 LocalDate delOneMonths = yyyyMMdd.minusMonths(1L);//減去一月 LocalDate delOneYears = yyyyMMdd.minusYears(1L);//減去一年 LocalDate delOneWeeks = yyyyMMdd.minusWeeks(1L);//減去一周 System.out.println("LocalDate yyyyMMdd 當(dāng)前時間: " + yyyyMMdd); System.out.println("*********LocalDate yyyyMMdd 添加 操作*********"); System.out.println("LocalDate yyyyMMdd 添加一日: " + addOneDay); System.out.println("LocalDate yyyyMMdd 添加一月: " + addOneMonths); System.out.println("LocalDate yyyyMMdd 添加一年: " + addOneYears); System.out.println("LocalDate yyyyMMdd 添加一周: " + addOneWeeks); System.out.println("*********LocalDate yyyyMMdd 減 操作*********"); System.out.println("LocalDate yyyyMMdd 減去一日: " + delOneDay); System.out.println("LocalDate yyyyMMdd 減去一月: " + delOneMonths); System.out.println("LocalDate yyyyMMdd 減去一年: " + delOneYears); System.out.println("LocalDate yyyyMMdd 減去一周: " + delOneWeeks); System.out.println("####################################################################"); LocalTime HHmmssSSS = LocalTime.now(); LocalTime addOneHours = HHmmssSSS.plusHours(1L); //添加1小時 LocalTime addOneMinutes = HHmmssSSS.plusMinutes(1L);//添加1分鐘 LocalTime addOneSeconds = HHmmssSSS.plusSeconds(1L);//添加1秒 LocalTime addOneNanos = HHmmssSSS.plusNanos(1L);//添加1納秒 LocalTime delOneHours = HHmmssSSS.minusHours(1L); //減去1小時 LocalTime delOneMinutes = HHmmssSSS.minusMinutes(1L);//減去1分鐘 LocalTime delOneSeconds = HHmmssSSS.minusSeconds(1L);//減去1秒 LocalTime delOneNanos = HHmmssSSS.minusNanos(1L);//減去1納秒 System.out.println("LocalTime HHmmssSSS 當(dāng)前時間: " + HHmmssSSS); System.out.println("*********LocalTime HHmmssSSS 添加 操作*********"); System.out.println("LocalTime HHmmssSSS 添加1小時: " + addOneHours); System.out.println("LocalTime HHmmssSSS 添加1分鐘: " + addOneMinutes); System.out.println("LocalTime HHmmssSSS 添加1秒: " + addOneSeconds); System.out.println("LocalTime HHmmssSSS 添加1納秒: " + addOneNanos); System.out.println("*********LocalTime HHmmssSSS 減 操作*********"); System.out.println("LocalTime HHmmssSSS 減去1小時: " + delOneHours); System.out.println("LocalTime HHmmssSSS 減去1分鐘: " + delOneMinutes); System.out.println("LocalTime HHmmssSSS 減去1秒: " + delOneSeconds); System.out.println("LocalTime HHmmssSSS 減去1納秒: " + delOneNanos); System.out.println("####################################################################"); LocalDateTime yyyyMMddHHmmssSSS = LocalDateTime.now(); LocalDateTime localDateTimeaddOneDay = yyyyMMddHHmmssSSS.plusDays(1L); //添加一日 LocalDateTime localDateTimeaddOneMonths = yyyyMMddHHmmssSSS.plusMonths(1L);//添加一月 LocalDateTime localDateTimeaddOneYears = yyyyMMddHHmmssSSS.plusYears(1L);//添加一年 LocalDateTime localDateTimeaddOneWeeks = yyyyMMddHHmmssSSS.plusWeeks(1L);//添加一周 LocalDateTime localDateTimeaddOneHours = yyyyMMddHHmmssSSS.plusHours(1L); //添加1小時 LocalDateTime localDateTimeaddOneMinutes = yyyyMMddHHmmssSSS.plusMinutes(1L);//添加1分鐘 LocalDateTime localDateTimeaddOneSeconds = yyyyMMddHHmmssSSS.plusSeconds(1L);//添加1秒 LocalDateTime localDateTimeaddOneNanos = yyyyMMddHHmmssSSS.plusNanos(1L);//添加1納秒 System.out.println("LocalDateTime yyyyMMddHHmmssSSS 當(dāng)前時間: " + yyyyMMddHHmmssSSS); System.out.println("*********LocalDateTime yyyyMMddHHmmssSSS 添加 操作*********"); System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加一日: " + localDateTimeaddOneDay); System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加一月: " + localDateTimeaddOneMonths); System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加一年: " + localDateTimeaddOneYears); System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加一周: " + localDateTimeaddOneWeeks); System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加1小時: " + localDateTimeaddOneHours); System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加1分鐘: " + localDateTimeaddOneMinutes); System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加1秒: " + localDateTimeaddOneSeconds); System.out.println("LocalDateTime yyyyMMddHHmmssSSS 添加1納秒: " + localDateTimeaddOneNanos); LocalDateTime localDateTimedelOneDay = yyyyMMddHHmmssSSS.minusDays(1L); //減去一日 LocalDateTime localDateTimedelOneMonths = yyyyMMddHHmmssSSS.minusMonths(1L);//減去一月 LocalDateTime localDateTimedelOneYears = yyyyMMddHHmmssSSS.minusYears(1L);//減去一年 LocalDateTime localDateTimedelOneWeeks = yyyyMMddHHmmssSSS.minusWeeks(1L);//減去一周 LocalDateTime localDateTimedelOneHours = yyyyMMddHHmmssSSS.minusHours(1L); //減去1小時 LocalDateTime localDateTimedelOneMinutes = yyyyMMddHHmmssSSS.minusMinutes(1L);//減去1分鐘 LocalDateTime localDateTimedelOneSeconds = yyyyMMddHHmmssSSS.minusSeconds(1L);//減去1秒 LocalDateTime localDateTimedelOneNanos = yyyyMMddHHmmssSSS.minusNanos(1L);//減去1納秒 System.out.println("*********LocalDateTime yyyyMMddHHmmssSSS 減 操作*********"); System.out.println("LocalDateTime yyyyMMddHHmmssSSS 減去一日: " + localDateTimedelOneDay); System.out.println("LocalDateTime yyyyMMddHHmmssSSS 減去一月: " + localDateTimedelOneMonths); System.out.println("LocalDateTime yyyyMMddHHmmssSSS 減去一年: " + localDateTimedelOneYears); System.out.println("LocalDateTime yyyyMMddHHmmssSSS 減去一周: " + localDateTimedelOneWeeks); System.out.println("LocalDateTime yyyyMMddHHmmssSSS 減去1小時: " + localDateTimedelOneHours); System.out.println("LocalDateTime yyyyMMddHHmmssSSS 減去1分鐘: " + localDateTimedelOneMinutes); System.out.println("LocalDateTime yyyyMMddHHmmssSSS 減去1秒: " + localDateTimedelOneSeconds); System.out.println("LocalDateTime yyyyMMddHHmmssSSS 減去1納秒: " + localDateTimedelOneNanos); /* 輸出: LocalDate yyyyMMdd 當(dāng)前時間: 2020-10-16 *********LocalDate yyyyMMdd 添加 操作********* LocalDate yyyyMMdd 添加一日: 2020-10-17 LocalDate yyyyMMdd 添加一月: 2020-11-16 LocalDate yyyyMMdd 添加一年: 2021-10-16 LocalDate yyyyMMdd 添加一周: 2020-10-23 *********LocalDate yyyyMMdd 減 操作********* LocalDate yyyyMMdd 減去一日: 2020-10-15 LocalDate yyyyMMdd 減去一月: 2020-09-16 LocalDate yyyyMMdd 減去一年: 2019-10-16 LocalDate yyyyMMdd 減去一周: 2020-10-09 #################################################################### LocalTime HHmmssSSS 當(dāng)前時間: 10:20:22.164 *********LocalTime HHmmssSSS 添加 操作********* LocalTime HHmmssSSS 添加1小時: 11:20:22.164 LocalTime HHmmssSSS 添加1分鐘: 10:21:22.164 LocalTime HHmmssSSS 添加1秒: 10:20:23.164 LocalTime HHmmssSSS 添加1納秒: 10:20:22.164000001 *********LocalTime HHmmssSSS 減 操作********* LocalTime HHmmssSSS 減去1小時: 09:20:22.164 LocalTime HHmmssSSS 減去1分鐘: 10:19:22.164 LocalTime HHmmssSSS 減去1秒: 10:20:21.164 LocalTime HHmmssSSS 減去1納秒: 10:20:22.163999999 #################################################################### LocalDateTime yyyyMMddHHmmssSSS 當(dāng)前時間: 2020-10-16T10:20:22.165 *********LocalDateTime yyyyMMddHHmmssSSS 添加 操作********* LocalDateTime yyyyMMddHHmmssSSS 添加一日: 2020-10-17T10:20:22.165 LocalDateTime yyyyMMddHHmmssSSS 添加一月: 2020-11-16T10:20:22.165 LocalDateTime yyyyMMddHHmmssSSS 添加一年: 2021-10-16T10:20:22.165 LocalDateTime yyyyMMddHHmmssSSS 添加一周: 2020-10-23T10:20:22.165 LocalDateTime yyyyMMddHHmmssSSS 添加1小時: 2020-10-16T11:20:22.165 LocalDateTime yyyyMMddHHmmssSSS 添加1分鐘: 2020-10-16T10:21:22.165 LocalDateTime yyyyMMddHHmmssSSS 添加1秒: 2020-10-16T10:20:23.165 LocalDateTime yyyyMMddHHmmssSSS 添加1納秒: 2020-10-16T10:20:22.165000001 *********LocalDateTime yyyyMMddHHmmssSSS 減 操作********* LocalDateTime yyyyMMddHHmmssSSS 減去一日: 2020-10-15T10:20:22.165 LocalDateTime yyyyMMddHHmmssSSS 減去一月: 2020-09-16T10:20:22.165 LocalDateTime yyyyMMddHHmmssSSS 減去一年: 2019-10-16T10:20:22.165 LocalDateTime yyyyMMddHHmmssSSS 減去一周: 2020-10-09T10:20:22.165 LocalDateTime yyyyMMddHHmmssSSS 減去1小時: 2020-10-16T09:20:22.165 LocalDateTime yyyyMMddHHmmssSSS 減去1分鐘: 2020-10-16T10:19:22.165 LocalDateTime yyyyMMddHHmmssSSS 減去1秒: 2020-10-16T10:20:21.165 LocalDateTime yyyyMMddHHmmssSSS 減去1納秒: 2020-10-16T10:20:22.164999999 */ }
將年、月、日等修改為指定的值,并返回新的日期(時間)對象
/** * 將年、月、日等修改為指定的值,并返回新的日期(時間)對象 * 析: 其效果與時間日期相加減差不多,如今天是2018-01-13,要想變?yōu)?018-01-20有兩種方式 * a. localDate.plusDays(20L) -> 相加指定的天數(shù) * b. localDate.withDayOfYear(20) -> 直接指定到哪一天 */ @Test public void directDesignationTime() { LocalDate yyyyMMdd = LocalDate.now(); System.out.println("LocalDate yyyyMMdd 當(dāng)前時間: " + yyyyMMdd); LocalDate addDay = yyyyMMdd.plusDays(4); System.out.println("LocalDate yyyyMMdd 添加4天后的日期: " + addDay); LocalDate directDesignationDate = yyyyMMdd.withDayOfMonth(20); System.out.println("LocalDate yyyyMMdd 直接指定到當(dāng)月第幾號: " + directDesignationDate); LocalDate directDesignationYearDate = yyyyMMdd.withDayOfYear(20); System.out.println("LocalDate yyyyMMdd 直接指定到當(dāng)年第幾天: " + directDesignationYearDate); LocalDate directDesignationYear = yyyyMMdd.withYear(2000); System.out.println("LocalDate yyyyMMdd 當(dāng)前時間直接指定年份: " + directDesignationYear); LocalDate directDesignationMonth = yyyyMMdd.withMonth(6); System.out.println("LocalDate yyyyMMdd 當(dāng)前時間直接指定月份: " + directDesignationMonth); }
獲取日期的年月日周時分秒
/** * 獲取日期的年月日周時分秒 */ @Test public void getDateInfo() { LocalDateTime yyyyMMddHHmmssSSS = LocalDateTime.now(); //本年當(dāng)中第多少天 int dayOfYear = yyyyMMddHHmmssSSS.getDayOfYear(); //本月當(dāng)中第多少天 int dayOfMonth = yyyyMMddHHmmssSSS.getDayOfMonth(); DayOfWeek dayOfWeek = yyyyMMddHHmmssSSS.getDayOfWeek(); //本周中星期幾 int value = dayOfWeek.getValue(); System.out.println("今天是" + yyyyMMddHHmmssSSS + "\n" + "本年當(dāng)中第" + dayOfYear + "天" + "\n" + "本月當(dāng)中第" + dayOfMonth + "天" + "\n" + "本周中星期" + value + "-即" + dayOfWeek + "\n"); //年 int year = yyyyMMddHHmmssSSS.getYear(); //月 Month month = yyyyMMddHHmmssSSS.getMonth(); //直接獲取 int monthValue = yyyyMMddHHmmssSSS.getMonthValue(); //日 int dayOfMonth1 = yyyyMMddHHmmssSSS.getDayOfMonth(); //時 int hour = yyyyMMddHHmmssSSS.getHour(); //分 int minute = yyyyMMddHHmmssSSS.getMinute(); //秒 int second = yyyyMMddHHmmssSSS.getSecond(); //納秒 int nano = yyyyMMddHHmmssSSS.getNano(); System.out.println("今天是" + yyyyMMddHHmmssSSS + "\n" + "年 : " + year + "\n" + "月 : " + monthValue + "-即 " + month + "\n" + "日 : " + dayOfMonth1 + "\n" + "時 : " + hour + "\n" + "分 : " + minute + "\n" + "秒 : " + second + "\n" + "納秒 : " + nano + "\n" ); }
時間日期前后的比較與判斷
/** * 時間日期前后的比較與判斷 */ @Test public void isBefore() { LocalDate now = LocalDate.now(); LocalDate of = LocalDate.of(2020, 10, 15); //判斷of 是否在 now 時間之前 boolean before = of.isBefore(now); System.out.println("判斷of 是否在 now 時間之前 " + before); //判斷of 是否在 now 時間之后 boolean after = of.isAfter(now); System.out.println("判斷of 是否在 now 時間之后 " + after); //判斷兩個時間是否相等 boolean equal = of.isEqual(now); System.out.println("判斷兩個時間是否相等 " + equal); //判斷是否為閏年 boolean leapYear = now.isLeapYear(); System.out.println("判斷是否為閏年 " + leapYear); /* 判斷of 是否在 now 時間之前true 判斷of 是否在 now 時間之后false 判斷兩個時間是否相等false 判斷是否為閏年true */ }
java8時鐘 : clock()
/** * java8時鐘 : clock() */ @Test public void clock() { //返回當(dāng)前時間,根據(jù)系統(tǒng)時間和UTC Clock clock = Clock.systemUTC(); System.out.println(clock); // 運(yùn)行結(jié)果: SystemClock[Z] }
時間戳
/** * 時間戳 * 事實(shí)上Instant就是java8以前的Date, * 可以使用以下兩個類中的方法在這兩個類型之間進(jìn)行轉(zhuǎn)換, * 比如Date.from(Instant)就是用來把Instant轉(zhuǎn)換成java.util.date的, * 而new Date().toInstant()就是將Date轉(zhuǎn)換成Instant的 */ @Test public void instant() { Instant instant = Instant.now(); System.out.println(instant); Date date = Date.from(instant); Instant instant2 = date.toInstant(); System.out.println(date); System.out.println(instant2); } System.currentTimeMillis() 效率高 new Date().getTime() 最常見,底層也是System.currentTimeMillis() Calendar.getInstance().getTimeInMillis() 這種方式其實(shí)是速度最慢
計算時間、日期間隔
/** * 計算時間、日期間隔 * Duration:用于計算兩個“時間”間隔 * Period:用于計算兩個“日期”間隔 */ @Test public void durationOrPeriod() { LocalDateTime now = LocalDateTime.now(); System.out.println("duration當(dāng)前時間:" + now); LocalDateTime of = LocalDateTime.of(2020, 10, 15, 10, 24); System.out.println("duration自定義時間:" + of); //Duration:用于計算兩個“時間”間隔 Duration duration = Duration.between(now, of); System.out.println(now + " 與 " + of + " 間隔 " + "\n" + " 天 :" + duration.toDays() + "\n" + " 時 :" + duration.toHours() + "\n" + " 分 :" + duration.toMinutes() + "\n" + " 毫秒 :" + duration.toMillis() + "\n" + " 納秒 :" + duration.toNanos() + "\n" ); LocalDate nowDate = LocalDate.now(); System.out.println("period當(dāng)前時間:" + now); LocalDate OfDate = LocalDate.of(2020, 10, 15); System.out.println("period自定義時間:" + of); //Period:用于計算兩個“日期”間隔 Period period = Period.between(nowDate, OfDate); System.out.println("Period相差年數(shù) : " + period.getYears()); System.out.println("Period相差月數(shù) : " + period.getMonths()); System.out.println("Period相差日數(shù) : " + period.getDays()); //還可以這樣獲取相差的年月日 System.out.println("-------------------------------"); long years = period.get(ChronoUnit.YEARS); long months = period.get(ChronoUnit.MONTHS); long days = period.get(ChronoUnit.DAYS); System.out.println("Period相差的年月日分別為 : " + years + "," + months + "," + days); //注意,當(dāng)獲取兩個日期的間隔時,并不是單純的年月日對應(yīng)的數(shù)字相加減,而是會先算出具體差多少天,在折算成相差幾年幾月幾日的 /* 輸出: duration當(dāng)前時間:2020-10-16T14:41:40.235 duration自定義時間:2020-10-15T10:24 2020-10-16T14:41:40.235 與 2020-10-15T10:24 間隔 天 :-1 時 :-28 分 :-1697 毫秒 :-101860235 納秒 :-101860235000000 period當(dāng)前時間:2020-10-16T14:41:40.235 period自定義時間:2020-10-15T10:24 Period相差年數(shù) : 0 Period相差月數(shù) : 0 Period相差日數(shù) : -1 ------------------------------- Period相差的年月日分別為 : 0,0,-1 */ }
日期格式化
將時間對象轉(zhuǎn)化為日期字符串
/** * 將時間對象轉(zhuǎn)化為日期字符串 * 時間日期的格式化(格式化后返回的類型是String) 自定格式 使用 DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS"); * 注:自定義轉(zhuǎn)化的格式一定要與日期類型對應(yīng) * LocalDate只能設(shè)置僅含年月日的格式 * LocalTime只能設(shè)置僅含時分秒的格式 * LocalDateTime可以設(shè)置含年月日時分秒的格式 */ @Test public void formatter1() { LocalDateTime now = LocalDateTime.now(); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS"); String format = dtf.format(now); System.out.println(format); //輸出: 2020-10-16 14:41:01:086 }
將時間字符串形式轉(zhuǎn)化為日期對象
/** * 將時間字符串形式轉(zhuǎn)化為日期對象 * <p> * 注:格式的寫法必須與字符串的形式一樣 * 2018-01-13 21:27:30 對應(yīng) yyyy-MM-dd HH:mm:ss * 20180113213328 對應(yīng) yyyyMMddHHmmss * 否則會報運(yùn)行時異常! * <p> * 但要記?。旱玫降淖罱K結(jié)果都是類似2018-01-13T21:27:30的格式 * 因為在輸出LocalDateTime對象時,會調(diào)用其重寫的toString方法。 */ @Test public void formatter2() { String dateStr = "2020-11-12"; DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate formatterDate = LocalDate.parse(dateStr, dtf); System.out.println(formatterDate); //輸出 2020-11-12 }
將時間日期對象轉(zhuǎn)為格式化后的時間日期對象
/** * 將時間日期對象轉(zhuǎn)為格式化后的時間日期對象 */ @Test public void formatter3() { //新的格式化API中,格式化后的結(jié)果都默認(rèn)是String,有時我們也需要返回經(jīng)過格式化的同類型對象 LocalDateTime ldt1 = LocalDateTime.now(); DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String temp = dtf1.format(ldt1); LocalDateTime formatedDateTime = LocalDateTime.parse(temp, dtf1); System.out.println(formatedDateTime); }
轉(zhuǎn)換
localDate 轉(zhuǎn) date
/** * localDate 轉(zhuǎn) date * localDateTime 轉(zhuǎn) date */ @Test public void localDateToDate() { LocalDate now = LocalDate.now(); Date from = Date.from(now.atStartOfDay(ZoneOffset.systemDefault()).toInstant()); LocalDateTime localDateTime = LocalDateTime.now(); Date date = Date.from(localDateTime.atZone(ZoneOffset.ofHours(8)).toInstant()); System.out.println(from); System.out.println(date); }
date 轉(zhuǎn) localDate
/** * date 轉(zhuǎn) localDate * date 轉(zhuǎn) localDateTime */ @Test public void dateToLocalDate() { Date date = new Date(); LocalDate localDate = date.toInstant().atZone(ZoneOffset.systemDefault()).toLocalDate(); System.out.println(localDate); LocalDateTime localDateTime = date.toInstant().atZone(ZoneOffset.systemDefault()).toLocalDateTime(); System.out.println(localDateTime); }
localDate 轉(zhuǎn) 時間戳
/** * LocalDate 轉(zhuǎn) 時間戳 * LocalDateTime 轉(zhuǎn) 時間戳 */ @Test public void localDateToInstant() { LocalDate localDate = LocalDate.now(); long instant = localDate.atStartOfDay(ZoneOffset.systemDefault()).toInstant().toEpochMilli(); System.out.println(instant); LocalDateTime now = LocalDateTime.now(); long instant1 = now.toInstant(ZoneOffset.ofHours(8)).toEpochMilli(); System.out.println(instant1); }
時間戳 轉(zhuǎn) localDate
/** * 時間戳 轉(zhuǎn) LocalDate * 時間戳 轉(zhuǎn) LocalDateTime */ @Test public void instantToLocalDate() { long time = new Date().getTime(); LocalDateTime localDateTime = Instant.ofEpochMilli(time).atZone(ZoneOffset.systemDefault()).toLocalDateTime(); System.out.println(localDateTime); LocalDate localDate = Instant.ofEpochMilli(time).atZone(ZoneOffset.systemDefault()).toLocalDate(); System.out.println(localDate); }
總結(jié)
到此這篇關(guān)于Java1.8中LocalDate方法使用的文章就介紹到這了,更多相關(guān)LocalDate方法使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java如何發(fā)送get請求獲取數(shù)據(jù)(附代碼)
這篇文章主要給大家介紹了關(guān)于java如何發(fā)送get請求獲取數(shù)據(jù)的相關(guān)資料,Java中的GET請求方法是HTTP協(xié)議中的一種請求方式,用于向服務(wù)器請求獲取資源,需要的朋友可以參考下2023-10-10通過Java實(shí)現(xiàn)zip文件與rar文件解壓縮的詳細(xì)步驟
這篇文章主要給大家介紹了如何通過?Java?來完成?zip?文件與?rar?文件的解壓縮,文中通過代碼示例講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-07-07springboot filter實(shí)現(xiàn)請求響應(yīng)全鏈路攔截
這篇文章主要為大家詳細(xì)介紹了SpringBoot如何結(jié)合Filter同時攔截請求和響應(yīng),從而實(shí)現(xiàn)??日志采集自動化,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-04-04Java爬蟲實(shí)現(xiàn)Jsoup利用dom方法遍歷Document對象
本文主要介紹了Java爬蟲實(shí)現(xiàn)Jsoup利用dom方法遍歷Document對象,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05Java實(shí)現(xiàn)輸出數(shù)字三角形實(shí)例代碼
大家好,本篇文章主要講的是Java實(shí)現(xiàn)輸出三角形實(shí)例代碼,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2022-01-01超級詳細(xì)Java?JDK環(huán)境配置教程(Mac?版)
這篇文章詳細(xì)講解了在MacOS上安裝JDK及配置Java環(huán)境的步驟,包括下載JDK安裝包、安裝JDK、查詢安裝路徑以及配置環(huán)境變量,旨在為初學(xué)者提供一份保姆級的安裝指南,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-10-10