Java1.8中LocalDate方法使用總結
前言:
由于之前想要用Java實現(xiàn)日歷的打印以及找到相應的尋找休息日,所以在這方面尋找相應的資料并進行總結歸納
Java中1.8之前有date類和calendar類。其中date類到了1.8大部分的方法被棄用了說明這些方法都有很大的缺陷,而且date類如果不格式化可讀性十分差,所以就需要格式化,而格式化使用simpledateformat來進行操作線程不安全。而calendar類是一個共享變量,而且沒有做線程不安全,當多個線程同時使用simpledateformat調用format方法時,多個線程會同時調用calendar.setTime方法,而導致的后果時time值一直被修改從而返回的格式化的時間是錯誤的。而且simpledateformat方法中format和parse方法都是線程不安全的。
Java1.8之后出現(xiàn)了localdate,localdatetime,localtime這些類,而這些類使用了final來修飾,使得這些類是不可變的,一旦實例化,值就固定了,有點類似于String類,所以這些類都是線程安全的。
localdate是針對于年月日的,localtime是針對于時分秒,localdatetime是針對于年月日時分秒
localDate時間創(chuàng)建方式
/**
* localDate時間創(chuà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 設值自定義日期 根據(jù)指定日期/時間創(chuàng)建對象
/**
* localDate 設值自定義日期
* 根據(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 當前時間: " + 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 當前時間: " + 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 當前時間: " + 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 當前時間: 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 當前時間: 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 當前時間: 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 當前時間: " + yyyyMMdd);
LocalDate addDay = yyyyMMdd.plusDays(4);
System.out.println("LocalDate yyyyMMdd 添加4天后的日期: " + addDay);
LocalDate directDesignationDate = yyyyMMdd.withDayOfMonth(20);
System.out.println("LocalDate yyyyMMdd 直接指定到當月第幾號: " + directDesignationDate);
LocalDate directDesignationYearDate = yyyyMMdd.withDayOfYear(20);
System.out.println("LocalDate yyyyMMdd 直接指定到當年第幾天: " + directDesignationYearDate);
LocalDate directDesignationYear = yyyyMMdd.withYear(2000);
System.out.println("LocalDate yyyyMMdd 當前時間直接指定年份: " + directDesignationYear);
LocalDate directDesignationMonth = yyyyMMdd.withMonth(6);
System.out.println("LocalDate yyyyMMdd 當前時間直接指定月份: " + directDesignationMonth);
}
獲取日期的年月日周時分秒
/**
* 獲取日期的年月日周時分秒
*/
@Test
public void getDateInfo() {
LocalDateTime yyyyMMddHHmmssSSS = LocalDateTime.now();
//本年當中第多少天
int dayOfYear = yyyyMMddHHmmssSSS.getDayOfYear();
//本月當中第多少天
int dayOfMonth = yyyyMMddHHmmssSSS.getDayOfMonth();
DayOfWeek dayOfWeek = yyyyMMddHHmmssSSS.getDayOfWeek();
//本周中星期幾
int value = dayOfWeek.getValue();
System.out.println("今天是" + yyyyMMddHHmmssSSS + "\n"
+ "本年當中第" + dayOfYear + "天" + "\n"
+ "本月當中第" + 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() {
//返回當前時間,根據(jù)系統(tǒng)時間和UTC
Clock clock = Clock.systemUTC();
System.out.println(clock);
// 運行結果: SystemClock[Z]
}
時間戳
/**
* 時間戳
* 事實上Instant就是java8以前的Date,
* 可以使用以下兩個類中的方法在這兩個類型之間進行轉換,
* 比如Date.from(Instant)就是用來把Instant轉換成java.util.date的,
* 而new Date().toInstant()就是將Date轉換成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() 這種方式其實是速度最慢計算時間、日期間隔
/**
* 計算時間、日期間隔
* Duration:用于計算兩個“時間”間隔
* Period:用于計算兩個“日期”間隔
*/
@Test
public void durationOrPeriod() {
LocalDateTime now = LocalDateTime.now();
System.out.println("duration當前時間:" + 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當前時間:" + 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);
//注意,當獲取兩個日期的間隔時,并不是單純的年月日對應的數(shù)字相加減,而是會先算出具體差多少天,在折算成相差幾年幾月幾日的
/*
輸出:
duration當前時間: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當前時間:2020-10-16T14:41:40.235
period自定義時間:2020-10-15T10:24
Period相差年數(shù) : 0
Period相差月數(shù) : 0
Period相差日數(shù) : -1
-------------------------------
Period相差的年月日分別為 : 0,0,-1
*/
}日期格式化
將時間對象轉化為日期字符串
/**
* 將時間對象轉化為日期字符串
* 時間日期的格式化(格式化后返回的類型是String) 自定格式 使用 DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS");
* 注:自定義轉化的格式一定要與日期類型對應
* LocalDate只能設置僅含年月日的格式
* LocalTime只能設置僅含時分秒的格式
* LocalDateTime可以設置含年月日時分秒的格式
*/
@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
}將時間字符串形式轉化為日期對象
/**
* 將時間字符串形式轉化為日期對象
* <p>
* 注:格式的寫法必須與字符串的形式一樣
* 2018-01-13 21:27:30 對應 yyyy-MM-dd HH:mm:ss
* 20180113213328 對應 yyyyMMddHHmmss
* 否則會報運行時異常!
* <p>
* 但要記?。旱玫降淖罱K結果都是類似2018-01-13T21:27:30的格式
* 因為在輸出LocalDateTime對象時,會調用其重寫的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
}將時間日期對象轉為格式化后的時間日期對象
/**
* 將時間日期對象轉為格式化后的時間日期對象
*/
@Test
public void formatter3() {
//新的格式化API中,格式化后的結果都默認是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);
}轉換
localDate 轉 date
/**
* localDate 轉 date
* localDateTime 轉 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 轉 localDate
/**
* date 轉 localDate
* date 轉 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 轉 時間戳
/**
* LocalDate 轉 時間戳
* LocalDateTime 轉 時間戳
*/
@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);
}
時間戳 轉 localDate
/**
* 時間戳 轉 LocalDate
* 時間戳 轉 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);
}總結
到此這篇關于Java1.8中LocalDate方法使用的文章就介紹到這了,更多相關LocalDate方法使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
java如何發(fā)送get請求獲取數(shù)據(jù)(附代碼)
這篇文章主要給大家介紹了關于java如何發(fā)送get請求獲取數(shù)據(jù)的相關資料,Java中的GET請求方法是HTTP協(xié)議中的一種請求方式,用于向服務器請求獲取資源,需要的朋友可以參考下2023-10-10
通過Java實現(xiàn)zip文件與rar文件解壓縮的詳細步驟
這篇文章主要給大家介紹了如何通過?Java?來完成?zip?文件與?rar?文件的解壓縮,文中通過代碼示例講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2024-07-07
springboot filter實現(xiàn)請求響應全鏈路攔截
這篇文章主要為大家詳細介紹了SpringBoot如何結合Filter同時攔截請求和響應,從而實現(xiàn)??日志采集自動化,感興趣的小伙伴可以跟隨小編一起學習一下2025-04-04
Java爬蟲實現(xiàn)Jsoup利用dom方法遍歷Document對象
本文主要介紹了Java爬蟲實現(xiàn)Jsoup利用dom方法遍歷Document對象,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-05-05
超級詳細Java?JDK環(huán)境配置教程(Mac?版)
這篇文章詳細講解了在MacOS上安裝JDK及配置Java環(huán)境的步驟,包括下載JDK安裝包、安裝JDK、查詢安裝路徑以及配置環(huán)境變量,旨在為初學者提供一份保姆級的安裝指南,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2024-10-10

