欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于LocalDateTime最常用方法和時(shí)間轉(zhuǎn)換方式

 更新時(shí)間:2024年11月05日 08:46:29   作者:大腦補(bǔ)丁  
Java8版本引入了LocalDateTime和LocalDate類,極大地方便了日期和時(shí)間的處理,本文主要介紹了字符串與LocalDateTime的互轉(zhuǎn),Long型時(shí)間戳與UTC時(shí)間字符串的轉(zhuǎn)換,獲取今天、某天的起止時(shí)間,自定義時(shí)間的設(shè)置,以及LocalDateTime與Date的相互轉(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;
	}

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)文章

  • Java連接ftp服務(wù)器實(shí)例代碼

    Java連接ftp服務(wù)器實(shí)例代碼

    這篇文章主要介紹了Java連接ftp服務(wù)器實(shí)例代碼 的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • Java全面細(xì)致講解Wrapper的使用

    Java全面細(xì)致講解Wrapper的使用

    在封裝中有一種特殊的類,能夠把基本的數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換來方便實(shí)際的使用。我們?cè)谥疤岬降囊恍?shù)據(jù)類型,最明顯的特征是所有字母為小寫狀態(tài),那么經(jīng)過Wrapper的包裝后,首字母就變成了大寫。下面我們就這種特殊的封裝類Wrapper的使用
    2022-05-05
  • Springboot創(chuàng)建時(shí)常用的依賴詳解

    Springboot創(chuàng)建時(shí)常用的依賴詳解

    本文介紹了Spring?Boot項(xiàng)目中常用依賴的配置及作用,涵蓋了父依賴、Web應(yīng)用、測(cè)試、數(shù)據(jù)庫、MyBatis、連接池、JSON處理、Lombok、AOP、校驗(yàn)、監(jiān)控、工具包、打包配置、多配置文件以及熱部署等
    2025-03-03
  • idea如何生成springboot單元測(cè)試用例

    idea如何生成springboot單元測(cè)試用例

    這篇文章主要介紹了idea生成springboot單元測(cè)試用例,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • Maven將Jar包打入本地倉庫的實(shí)現(xiàn)

    Maven將Jar包打入本地倉庫的實(shí)現(xiàn)

    項(xiàng)目需要用到一個(gè)Jar包,不能從遠(yuǎn)程倉庫拉取,只有一個(gè)Jar包,所以需要將Jar包打入到本地倉庫才能引入項(xiàng)目,本文主要介紹了Maven將Jar包打入本地倉庫的實(shí)現(xiàn),感興趣的可以了解一下
    2023-12-12
  • java中通過網(wǎng)卡名稱獲取IP地址

    java中通過網(wǎng)卡名稱獲取IP地址

    java中通過網(wǎng)卡名稱獲取IP地址,需要的朋友可以參考一下
    2013-04-04
  • Spring?Boot?中的?Native?SQL基本概念及使用方法

    Spring?Boot?中的?Native?SQL基本概念及使用方法

    在本文中,我們介紹了 Spring Boot 中的 Native SQL,以及如何使用 JdbcTemplate 和 NamedParameterJdbcTemplate 來執(zhí)行自定義的 SQL 查詢或更新語句,需要的朋友跟隨小編一起看看吧
    2023-07-07
  • SpringMVC MVC架構(gòu)與Servlet使用詳解

    SpringMVC 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
  • JavaWeb倉庫管理系統(tǒng)詳解

    JavaWeb倉庫管理系統(tǒng)詳解

    這篇文章主要為大家詳細(xì)介紹了JavaWeb倉庫管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Java實(shí)現(xiàn)消息轟炸的方法 附帶源碼

    Java實(shí)現(xiàn)消息轟炸的方法 附帶源碼

    這篇文章主要介紹了Java實(shí)現(xiàn)消息轟炸的方法 附帶源碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04

最新評(píng)論