localdate获取几个月前_关于近期使用java8中LocalDateTime的总结
1. 前言
前不久項目codereview,發現有同事在處理日期的時候用LocalDateTime,當時還比較好奇,以前用都是用Date,雖然從開始接觸java8也有幾年時間了,但是還真不知道java8中有這么一個時間類。所以在日常開發中也玩了起來。發現的確用起來挺方便。下面就做一下整理。
2. 關于LocalDateTime的簡單介紹
Java的Date,Calendar類型使用起來并不是很方便,而且Date類(據說)有著線程不安全等諸多弊端。同時若不進行封裝,會在每次使用時特別麻煩。于是Java8推出了線程安全、簡易、高可靠的時間包。并且數據庫中也支持LocalDateTime類型,在數據存儲時候使時間變得簡單。Java8這次新推出的包括三個相關的時間類型:LocalDateTime年月日十分秒;LocalDate日期;LocalTime時間;三個包的方法都差不多。
3. LocalDateTime的簡單日常使用
①. 與字符串互相轉換
都知道以前對Date進行格式化還要借助SimpDateFormart對象。操作起來不能說麻煩,但也不是那么順手。下面貼代碼LocalDateTime與字符串操作
//將當前時間格式化為字符串 pattern為yyyy-MM等
LocalDateTime.now().format(DateTimeFormatter.ofPattern(pattern));
//將時間字符串轉換為LocalDateTime
LocalDateTime.parse(dateTimeStr, DateTimeFormatter.ofPattern(pattern));
②. 獲取兩時間段相隔(天,小時...)數
Duration duration = Duration.between(startLocalDateTime,endLocalDateTime);
//獲取相隔天數
duration.toDays();
//獲取相隔小時
duration.toHours();
//獲取相隔分鐘
duration.toMinutes();
//獲取相隔秒數
uration.getSeconds()
//獲取相隔毫秒
duration.toMillis();
Period period = Period.between(startLocalDateTime.toLocalDate(),endLocalDateTime.toLocalDate());
//獲取相隔年
period.getYears();
//獲取相隔月
period.getMonths();
period.toTotalMonths();
③. 進行時間的加減
//增加plusXX 如:增加一個月
LocalDateTime.now().plusMonths(1);
//減少minusXX 如:減少一個月
LocalDateTime.now().minusMonths(1);
④. 獲取當月最后一天
LocalDateTime endLocalDateTime = now.with(TemporalAdjusters.lastDayOfMonth());
⑤. LocalDateTime與Date互轉
//LocalDateTime to Date
//ZoneId為時區 這里獲取系統默認時區
ZoneId zone = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.now();
//Instant是一個精確到納秒的時間對象
Instant instant = localDateTime.atZone(zone).toInstant();
Date date = Date.from(instant);
//Date to LocalDateTime
Date date = new Date();
Instant instant = date.toInstant();
ZoneId zone = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
持續更新.....
總結
以上是生活随笔為你收集整理的localdate获取几个月前_关于近期使用java8中LocalDateTime的总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux里hba状态_在Linux/U
- 下一篇: mysql avg 时间_MySQL或R