關(guān)于LocalDateTime最常用方法和時(shí)間轉(zhuǎn)換方式
LocalDateTime最常用方法和時(shí)間轉(zhuǎn)換
Java 8 版本以后,新增了了LocalDateTime和了LocalDate類,轉(zhuǎn)換方便不亞于jodaTIme。
LocalDateTime方法有很多,本文將開發(fā)中最常用的一些時(shí)間轉(zhuǎn)換列舉出來,并給出轉(zhuǎn)換后的示例,希望大家可以轉(zhuǎn)換時(shí)參考使用。
字符串轉(zhuǎn)LocalDateTime
public static LocalDateTime parseStringToDateTime(String time, String format) { DateTimeFormatter df = DateTimeFormatter.ofPattern(format); return LocalDateTime.parse(time, df); }
LocalDateTime轉(zhuǎn)字符串
public static String getDateTimeToString(LocalDateTime localDateTime, String format) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format); return localDateTime.format(formatter); }
測(cè)試:
若毫秒位不為000則顯示毫秒
String utc = getUTCMillisecondFromTimestamp(1539718265123); System.out.println(utc); 輸出:2018-10-16T19:31:05.123Z
若毫秒為000則不顯示毫秒,
String utc = getUTCMillisecondFromTimestamp(1539718265000); System.out.println(utc); 輸出:2018-10-16T19:31:05Z
Long型時(shí)間戳(15位)轉(zhuǎn)UTC時(shí)間字符串
/** * 將UTC時(shí)間戳轉(zhuǎn)為UTC字符串(精確到秒) * * @param timestamp * @return */ public static String getUTCStrFromTimestamp(long timestamp) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'"); // 北京時(shí)間:ZoneId.of("UTC+8");系統(tǒng)默認(rèn)時(shí)間:ZoneId.systemDefault() LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(timestamp), ZoneId.of("UTC")); String utc = localDateTime.format(formatter); return utc; }
測(cè)試:
String utc = getUTCStrFromTimestamp(1539718265123); System.out.println(utc); 輸出:2018-10-16T19:31:05Z
Long型時(shí)間戳(15位)轉(zhuǎn)UTC時(shí)間字符串
/** * 將時(shí)間戳轉(zhuǎn)為UTC字符串(若毫秒為000則不顯示毫秒,若毫秒位不為000則顯示毫秒) * * 返回格式:2018-10-16T19:31:05.123Z * * @param timestamp * @return */ public static String getUTCMillisecondFromTimestamp(long timestamp) { Instant instant = Instant.ofEpochMilli(timestamp); String utcString = instant.toString(); return utcString; }
獲取今天的起止時(shí)間
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'"); String startTime = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0).format(formatter); String endTime = LocalDateTime.now().withHour(23).withMinute(59).withSecond(59).withNano(999_999_999).format(formatter);
返回目標(biāo)月份的最后一天
/** * 返回目標(biāo)月份的最后一天 * * @param sourceDate 目標(biāo)月份 * @param monthOffset 月份偏移量 * @return */ private LocalDate getLastDateOfMonth(LocalDate sourceDate, int monthOffset) { return sourceDate.plusMonths(monthOffset).with(TemporalAdjusters.lastDayOfMonth()); }
獲取某天的起止時(shí)間(優(yōu)雅)
LocalDate date = LocalDate.of(2021, 4, 20); LocalDateTime startTime = LocalDateTime.of(date, LocalTime.MIN); LocalDateTime endTime = LocalDateTime.of(date, LocalTime.MAX);
LocalDateTime設(shè)置自定義時(shí)間
/** * 獲得一個(gè)(毫秒)時(shí)間戳的十分鐘起始時(shí)間戳 * * 如:輸入1534930875000(2018-08-22 17:41:15)的時(shí)間戳返回1534930800000(2018-08-22 17:40:00)的時(shí)間戳 * * @param timestrap * * * @return */ public static long getTenMinuteStartTimestrap(long timestamp) { LocalDateTime localDateTime = getLocalDateTimeByTimestamp(timestamp); int minute = localDateTime.getMinute(); // 分鐘個(gè)位數(shù)置為0 int minute_floor = minute / 10 * 10; LocalDateTime startLocalDateTime = localDateTime.withMinute(minute_floor).withSecond(0).withNano(0); long startTimestamp = getTimestampByLocalDateTime(startLocalDateTime); return startTimestamp; }
Long毫秒時(shí)間戳轉(zhuǎn)LocalDateTime
/** * Long毫秒時(shí)間戳轉(zhuǎn)LocalDateTime */ public static LocalDateTime getLocalDateTimeByTimestamp(long timestamp) { Instant instant = Instant.ofEpochMilli(timestamp); LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneOffset.UTC); return localDateTime; }
根據(jù)LocalDateTime獲取毫秒時(shí)間戳
/** * 根據(jù)毫秒時(shí)間戳獲取LocalDateTime * @param localDateTime * @return */ public static long getTimestampByLocalDateTime(LocalDateTime localDateTime) { long timestamp = localDateTime.atZone(ZoneId.of("UTC")).toInstant().toEpochMilli(); return timestamp; }
Long時(shí)間戳根據(jù)時(shí)區(qū)轉(zhuǎn)為當(dāng)?shù)厝掌?/h3>
/**
* 時(shí)間戳根據(jù)時(shí)區(qū)轉(zhuǎn)為當(dāng)?shù)厝掌?
* @param timestamp
* @param timezone
* @return
*/
public static Date getLocalDateByTimezone(long timestamp, int timezone) {
Instant instant = Instant.ofEpochMilli(timestamp);
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneOffset.UTC);
// 當(dāng)?shù)貢r(shí)間
LocalDateTime localDate = localDateTime.plusHours(timezone);
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'");
String localDateTimeStr = df.format(localDate);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
Date date = null;
try {
date = sdf.parse(localDateTimeStr);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
/** * 時(shí)間戳根據(jù)時(shí)區(qū)轉(zhuǎn)為當(dāng)?shù)厝掌? * @param timestamp * @param timezone * @return */ public static Date getLocalDateByTimezone(long timestamp, int timezone) { Instant instant = Instant.ofEpochMilli(timestamp); LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneOffset.UTC); // 當(dāng)?shù)貢r(shí)間 LocalDateTime localDate = localDateTime.plusHours(timezone); DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'"); String localDateTimeStr = df.format(localDate); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); Date date = null; try { date = sdf.parse(localDateTimeStr); } catch (ParseException e) { e.printStackTrace(); } return date; }
LocalDateTime轉(zhuǎn)Date
注意:系統(tǒng)所在時(shí)區(qū)
Date date = Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant());
Date轉(zhuǎn)LocalDateTime
Date todayDate = new Date(); LocalDateTime ldt = todayDate.toInstant() .atZone( ZoneId.systemDefault() ) .toLocalDateTime();
毫秒轉(zhuǎn)秒(時(shí)間戳)
long second = Instant.ofEpochMilli(1636338645000L).getEpochSecond();
秒轉(zhuǎn)毫秒(時(shí)間戳)
long second = Instant.ofEpochSecond(1636338645L).toEpochMilli();
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Springboot創(chuàng)建時(shí)常用的依賴詳解
本文介紹了Spring?Boot項(xiàng)目中常用依賴的配置及作用,涵蓋了父依賴、Web應(yīng)用、測(cè)試、數(shù)據(jù)庫、MyBatis、連接池、JSON處理、Lombok、AOP、校驗(yàn)、監(jiān)控、工具包、打包配置、多配置文件以及熱部署等2025-03-03Maven將Jar包打入本地倉庫的實(shí)現(xiàn)
項(xiàng)目需要用到一個(gè)Jar包,不能從遠(yuǎn)程倉庫拉取,只有一個(gè)Jar包,所以需要將Jar包打入到本地倉庫才能引入項(xiàng)目,本文主要介紹了Maven將Jar包打入本地倉庫的實(shí)現(xiàn),感興趣的可以了解一下2023-12-12Spring?Boot?中的?Native?SQL基本概念及使用方法
在本文中,我們介紹了 Spring Boot 中的 Native SQL,以及如何使用 JdbcTemplate 和 NamedParameterJdbcTemplate 來執(zhí)行自定義的 SQL 查詢或更新語句,需要的朋友跟隨小編一起看看吧2023-07-07SpringMVC MVC架構(gòu)與Servlet使用詳解
MVC設(shè)計(jì)模式一般指 MVC 框架,M(Model)指數(shù)據(jù)模型層,V(View)指視圖層,C(Controller)指控制層。使用 MVC 的目的是將 M 和 V 的實(shí)現(xiàn)代碼分離,使同一個(gè)程序可以有不同的表現(xiàn)形式。其中,View 的定義比較清晰,就是用戶界面2022-10-10