最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關于LocalDateTime最常用方法和時間轉換方式

 更新時間:2024年11月05日 08:46:29   作者:大腦補丁  
Java8版本引入了LocalDateTime和LocalDate類,極大地方便了日期和時間的處理,本文主要介紹了字符串與LocalDateTime的互轉,Long型時間戳與UTC時間字符串的轉換,獲取今天、某天的起止時間,自定義時間的設置,以及LocalDateTime與Date的相互轉換等常用方法

LocalDateTime最常用方法和時間轉換

Java 8 版本以后,新增了了LocalDateTime和了LocalDate類,轉換方便不亞于jodaTIme。

LocalDateTime方法有很多,本文將開發(fā)中最常用的一些時間轉換列舉出來,并給出轉換后的示例,希望大家可以轉換時參考使用。

字符串轉LocalDateTime

public static LocalDateTime parseStringToDateTime(String time, String format) {
  DateTimeFormatter df = DateTimeFormatter.ofPattern(format);
  return LocalDateTime.parse(time, df);
}

LocalDateTime轉字符串

public static String getDateTimeToString(LocalDateTime localDateTime, String format) {
  DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
  return localDateTime.format(formatter);
}

測試:

若毫秒位不為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型時間戳(15位)轉UTC時間字符串

/**
	 * 將UTC時間戳轉為UTC字符串(精確到秒)
	 *
	 * @param timestamp
	 * @return
	 */
	public static String getUTCStrFromTimestamp(long timestamp) {
		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'");
		// 北京時間:ZoneId.of("UTC+8");系統默認時間:ZoneId.systemDefault() 
		LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(timestamp), ZoneId.of("UTC"));
		String utc = localDateTime.format(formatter);
		return utc;
	}

測試:

String utc = getUTCStrFromTimestamp(1539718265123);
System.out.println(utc);

輸出:2018-10-16T19:31:05Z

Long型時間戳(15位)轉UTC時間字符串

	/**
	 * 將時間戳轉為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;
	}

獲取今天的起止時間

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);

返回目標月份的最后一天

/**
	 * 返回目標月份的最后一天
	 *
	 * @param sourceDate  目標月份
	 * @param monthOffset 月份偏移量
	 * @return
	 */
	private LocalDate getLastDateOfMonth(LocalDate sourceDate, int monthOffset) {
		return sourceDate.plusMonths(monthOffset).with(TemporalAdjusters.lastDayOfMonth());
	}

獲取某天的起止時間(優(yōu)雅)

LocalDate date = LocalDate.of(2021, 4, 20);
LocalDateTime startTime = LocalDateTime.of(date, LocalTime.MIN);
LocalDateTime endTime = LocalDateTime.of(date, LocalTime.MAX);

LocalDateTime設置自定義時間

/**
	 * 獲得一個(毫秒)時間戳的十分鐘起始時間戳
	 * 
	 * 如:輸入1534930875000(2018-08-22 17:41:15)的時間戳返回1534930800000(2018-08-22 17:40:00)的時間戳
	 * 
	 * @param timestrap
	 * 
	 * 
	 * @return
	 */
	public static long getTenMinuteStartTimestrap(long timestamp) {
		LocalDateTime localDateTime = getLocalDateTimeByTimestamp(timestamp);
		int minute = localDateTime.getMinute();
		// 分鐘個位數置為0
		int minute_floor = minute / 10 * 10;
		LocalDateTime startLocalDateTime = localDateTime.withMinute(minute_floor).withSecond(0).withNano(0);
		long startTimestamp = getTimestampByLocalDateTime(startLocalDateTime);
		return startTimestamp;
	}

Long毫秒時間戳轉LocalDateTime

	/**
	 * Long毫秒時間戳轉LocalDateTime
	 */
	public static LocalDateTime getLocalDateTimeByTimestamp(long timestamp) {
		Instant instant = Instant.ofEpochMilli(timestamp);
		LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneOffset.UTC);
		return localDateTime;
	}

根據LocalDateTime獲取毫秒時間戳

	/**
	 * 根據毫秒時間戳獲取LocalDateTime
	 * @param localDateTime
	 * @return
	 */
	public static long getTimestampByLocalDateTime(LocalDateTime localDateTime) {
		long timestamp = localDateTime.atZone(ZoneId.of("UTC")).toInstant().toEpochMilli();
		return timestamp;
	}

Long時間戳根據時區(qū)轉為當地日期

/**
	 * 時間戳根據時區(qū)轉為當地日期
	 * @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);
		// 當地時間
		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轉Date

注意:系統所在時區(qū)

Date date = Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant());

Date轉LocalDateTime

Date todayDate = new Date();
LocalDateTime ldt = todayDate.toInstant()
        .atZone( ZoneId.systemDefault() )
        .toLocalDateTime();

毫秒轉秒(時間戳)

long second = Instant.ofEpochMilli(1636338645000L).getEpochSecond();

秒轉毫秒(時間戳)

long second = Instant.ofEpochSecond(1636338645L).toEpochMilli();

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • java 實現發(fā)短信功能---騰訊云短信

    java 實現發(fā)短信功能---騰訊云短信

    如今發(fā)短信功能已經成為互聯網公司的標配,接下來通過本文給大家介紹java 實現發(fā)短信功能---騰訊云短信 ,需要的朋友可以參考下
    2019-08-08
  • Java 高并發(fā)二:多線程基礎詳細介紹

    Java 高并發(fā)二:多線程基礎詳細介紹

    本文主要介紹Java 高并發(fā)多線程的知識,這里整理詳細的資料來解釋線程的知識,有需要的學習高并發(fā)的朋友可以參考下
    2016-09-09
  • Java開發(fā)學習之Bean的生命周期詳解

    Java開發(fā)學習之Bean的生命周期詳解

    從創(chuàng)建到消亡的完整過程,例如人從出生到死亡的整個過程就是一個生命周期。本文將通過示例為大家詳細講講Bean的生命周期,感興趣的可以學習一下
    2022-06-06
  • java錯誤:無效的源發(fā)行版:18解決辦法圖文詳解

    java錯誤:無效的源發(fā)行版:18解決辦法圖文詳解

    在Java開發(fā)中,如果你遇到錯誤: 無效的源發(fā)行版,這通常意味著你正在使用的Java編譯器(通常是javac)被配置為編譯一個比你的JDK 版本更高,這篇文章主要給大家介紹了關于java錯誤:無效的源發(fā)行版:18的解決辦法,需要的朋友可以參考下
    2024-08-08
  • 淺談Java鎖的膨脹過程以及一致性哈希對鎖膨脹的影響

    淺談Java鎖的膨脹過程以及一致性哈希對鎖膨脹的影響

    本文主要介紹了Java鎖的膨脹過程以及一致性哈希對鎖膨脹的影響,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java異常--常見方法--自定義異常--增強try(try-with-resources)詳解

    Java異常--常見方法--自定義異常--增強try(try-with-resources)詳解

    這篇文章主要介紹了Java異常--常見方法--自定義異常--增強try(try-with-resources)的相關知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • 詳解Java Callable接口實現多線程的方式

    詳解Java Callable接口實現多線程的方式

    這篇文章主要介紹了詳解Java Callable接口實現多線程的方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • 關于跨域無效的問題及解決(java后端方案)

    關于跨域無效的問題及解決(java后端方案)

    這篇文章主要介紹了關于跨域無效的問題及解決(java后端方案),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • Kotlin Coroutines執(zhí)行異步加載示例詳解

    Kotlin Coroutines執(zhí)行異步加載示例詳解

    這篇文章主要給大家介紹了關于Kotlin Coroutines執(zhí)行異步加載的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-01-01
  • 一篇文章教你用Java使用JVM工具檢測問題

    一篇文章教你用Java使用JVM工具檢測問題

    這篇文章主要介紹了深入理解Java使用JVM工具檢測問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-09-09

最新評論

旬阳县| 乌拉特前旗| 万安县| 京山县| 沁水县| 兴和县| 双桥区| 广宗县| 通河县| 和静县| 和静县| 长垣县| 南京市| 潜山县| 台北县| 澜沧| 元谋县| 都江堰市| 崇左市| 临安市| 花莲市| 株洲市| 若羌县| 翼城县| 泰兴市| 澄迈县| 兴文县| 尉犁县| 广西| 利辛县| 海口市| 都匀市| 钟祥市| 阳朔县| 裕民县| 凌海市| 安徽省| 安化县| 正阳县| 织金县| 达尔|