每日一課 | Java 8 中 ZonedDateTime 與 Timestamp 的相互轉換

2021-03-02 Java雲筆記

將java.time.ZonedDateTime轉換為java.sql.Timestamp Java示例,反之亦然。

1. ZonedDateTime->時間戳

TimeExample1.java 

package com.mkyong.jdbc;

import java.sql.Timestamp;
import java.time.ZonedDateTime;

public class TimeExample1 {

    public static void main(String[] args) {

        ZonedDateTime now = ZonedDateTime.now();

        // 1. ZonedDateTime to TimeStamp
        Timestamp timestamp = Timestamp.valueOf(now.toLocalDateTime());

        // 2. ZonedDateTime to TimeStamp , no different
        Timestamp timestamp2 = Timestamp.from(now.toInstant());

        System.out.println(now); // 2019-06-19T14:12:13.585294800+08:00[Asia/Kuala_Lumpur]

        System.out.println(timestamp); // 2019-06-19 14:12:13.5852948

        System.out.println(timestamp2); // 2019-06-19 14:12:13.5852948

    }
}

輸出量

2019-06-19T14:12:13.585294800+08:00[Asia/Kuala_Lumpur]
2019-06-19 14:12:13.5852948
2019-06-19 14:12:13.5852948

2.時間戳-> ZonedDateTime

TimeExample2.java 

package com.mkyong;

import java.sql.Timestamp;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;

public class TimeExample2 {

    public static void main(String[] args) {

        Timestamp timestamp = Timestamp.from(Instant.now());

        LocalDateTime localDateTimeNoTimeZone = timestamp.toLocalDateTime();

        ZonedDateTime zonedDateTime1 = localDateTimeNoTimeZone.atZone(ZoneId.of("+08:00"));

        ZonedDateTime zonedDateTime2 = localDateTimeNoTimeZone.atZone(ZoneId.of("Asia/Kuala_Lumpur"));

        ZonedDateTime zonedDateTime3 = localDateTimeNoTimeZone.atZone(ZoneId.systemDefault());

        ZonedDateTime zonedDateTime4 = localDateTimeNoTimeZone.atZone(ZoneId.of("-08:00"));

        System.out.println(timestamp); // 2019-06-19 14:08:23.4458984

        System.out.println(zonedDateTime1); // 2019-06-19T14:08:23.445898400+08:00

        System.out.println(zonedDateTime2); // 2019-06-19T14:08:23.445898400+08:00[Asia/Kuala_Lumpur]

        System.out.println(zonedDateTime3); // 2019-06-19T14:08:23.445898400+08:00[Asia/Kuala_Lumpur]

        System.out.println(zonedDateTime4); // 2019-06-19T14:08:23.445898400-08:00

    }

}

輸出量

2019-06-19 14:08:23.4458984
2019-06-19T14:08:23.445898400+08:00
2019-06-19T14:08:23.445898400+08:00[Asia/Kuala_Lumpur]
2019-06-19T14:08:23.445898400+08:00[Asia/Kuala_Lumpur]
2019-06-19T14:08:23.445898400-08:00

參考文獻翻譯自: https://mkyong.com/java8/java-8-convert-zoneddatetime-to-timestamp/

推薦閱讀--

相關焦點

  • 俠說java8-LocalDateTime等時間使用手冊(全),先mark後看
    ZonedDateTime -> Date"); System.out.println("zonedDateTime : " + zonedDateTime); System.out.println("date3 : " + date3);3.如何比較時間?
  • 18 個示例帶你掌握 Java 8 日期時間處理!
    00ZonedDateTime帶時區的時間Clock時鐘,比如獲取目前美國紐約的時間java.time.format.DateTimeFormatter時間格式化示例1:Java 8中獲取今天的日期Java 8 中的 LocalDate 用於表示當天日期
  • 18 個 Java 8 日期處理的工具類
    示例1:Java 8中獲取今天的日期Java 8 中的 LocalDate 用於表示當天日期。和java.util.Date不同,它只有日期,不包含時間。當你僅需要表示日期時就用這個類。        System.out.println("自定義日期:"+date);    }}示例4:Java 8中判斷兩個日期是否相等package com.shxt.demo02;import java.time.LocalDate;public class Demo04 {    public static
  • 18個 Java8 日期處理的實踐,太有用了!
    示例1:Java 8中獲取今天的日期Java 8 中的 LocalDate 用於表示當天日期。和java.util.Date不同,它只有日期,不包含時間。當你僅需要表示日期時就用這個類。這在Java 8以前都是 GregorianCalendar類來做的。下面這個例子展示了如何把本時區的時間轉換成另一個時區的時間。
  • Java 8時間類,越用越香
    為什麼會在Jdk8中加入很多時間類非線程安全java.util.Date 是非線程安全的,所有的日期類都是可變的 = new Random().nextInt(100);             date.setTime(time);             System.
  • 核桃乾貨 | 最常見的10種Java異常問題!
    Java 8 推出了全新的日期時間API,在教程中我們將通過一些簡單的實例來學習如何使用新API。你可以用同樣的方法增加1個月、1年、1小時、1分鐘甚至一個世紀,更多選項可以查看Java 8 API中的ChronoUnit類package com.shxt.demo02;import java.time.LocalDate;import java.time.temporal.ChronoUnit;public
  • 如何在Python的time模塊中暢遊?
    datefrom datetime import timedelta一、時間的獲取t = time.time()t = time.localtime()t1 = datetime.now().strftime("%Y-%m-%d %H:%M:%S")t2 = time.strftime
  • xk-time 1.1.1 發布,Java 時間工具包 - OSCHINA - 中文開源技術...
    , based on java8 date and time API, thread safe, easy to use.時間轉換,計算,格式化,解析,日曆和cron表達式等的工具,使用java8,線程安全,簡單易用,多達60幾種常用日期格式化模板。0.為什麼要開發這個工具?(1)java8以前的Date API設計不太好,使用不方便,往往會有線程安全問題。
  • 深入Python中的time和datetime模塊
    注意:目前Python中支持的最大的時間戳為32535244799(3001-01-01 15:59:59)Python的time塊下有很多函數可以轉換常見日期格式。如函數time.time()用於獲取當前時間戳。
  • 二十六、深入Python中的time和datetime模塊
    注意:目前Python中支持的最大的時間戳為32535244799(3001-01-01 15:59:59)Python的time塊下有很多函數可以轉換常見日期格式。如函數time.time()用於獲取當前時間戳。
  • Java從零開始學 - 第65篇:常用的幾十個函數詳解
    LOWER(str) 可以將字符串 str 中的字母字符全部轉換成小寫。中的字母字符全部轉換成大寫。兩個函數作用相同,返回當前系統的日期值curtime 和 current_time兩個函數作用相同,返回當前系統的時間值now 和 sysdate兩個函數作用相同,返回當前系統的日期和時間值unix_timestamp獲取UNIX時間戳函數,返回一個以 UNIX 時間戳為基礎的無符號整數from_unixtime將 UNIX 時間戳轉換為時間格式,與UNIX_TIMESTAMP互為反函數month獲取指定日期中的月份
  • 當Impala碰到由Hive生成的timestamp數據
    無論是寫入還是讀取數據,或者通過諸如from_unixtime()或unix_timestamp()之類的函數轉換為Unix時間戳或者從Unix時間轉換時。要將timestamp值轉換為date或者time,我們一般使用from_utc_timestamp()來進行轉換,但是對於Impala來說如果想轉換為OS的本地時區,一般你還要帶上時區參數比如CST,為了方便你也可以在Impala的配置中加上--use_local_tz_for_unix_timestamp_conversions=true。
  • xk-time 1.1.0 發布,Java 時間工具包,增加模糊解析日期功能
    xk-time is a datetime converter calculator formatter calendar and cron expression tool set, based on java8 date and time API, thread safe, easy to use.
  • 別用Date了,Java8新特性之日期處理,現在學會也不遲!
    實戰在教程中我們將通過一些簡單的實例來學習如何使用新API,因為只有在實際的項目中用到,才是學習新知識以及新技術最快的方式。1. 獲取當前的日期Java 8 中的 LocalDate 用於表示當天日期。和 java.util.Date不同,它只有日期,不包含時間。當你僅需要表示日期時就用這個類。
  • JAVA日期Date轉換String其實很簡單
    JAVA提供了一個在Date類型和String類型之間互換的類:java.text.SimpleDateFormat,我們先來看下這個類的構造函數= new SimpleDateFormat(pattern3); logger.info(sdf.format(date)); /** 2019年03月07日 22時27分44秒 */ logger.info(sdf2.format(date));
  • 每日一課 | Java 中把負數轉換為正數
    要將負數轉換為正數(這稱為絕對值),請使用Math.abs() 。
  • java中定義日期格式的轉換符
    Hi,大家好久不見,今天我們在這裡給大家介紹一下關於Java的小知識,在Java中定義日期格式的轉換符,至於運用呢就不和大家做介紹了;接下來就給大家詳細介紹一下如何實現。那我們該如何創建使用呢?//j的使用,一年的天數System.out.printf("一年中的天數(即年的第幾天):%tj%n",date);//m的使用,月份System.out.printf("兩位數字的月份(不足兩位前面補0):%tm%n",date);//d
  • 每日一課 | Java 中如何將 ArrayList 與 HashSet 互相轉換?
    由於Set和List都擴展了Collection,因此轉換非常簡單。它只是將List傳遞給Set構造函數,反之亦然。將列錶轉換為集合Set set = new HashSet(list);將集轉換為列表List list = new ArrayList(set);1.列出示例import java.util.ArrayList;
  • MySQL Time Zone 時區問題
    時區的更改會影響MySQL時間函數的值,例如NOW(),CURDATE()等時區的更改會影響timestamp類型列的值,注意TIMESTAMP列的值從當前時區轉換為UTC用於存儲,當進行檢索的時候從UTC轉換到當前時區,所以當時區(或者會話時區)發生變化時,timestamp的值不同。
  • 第25天:Python datetime 和 time
    在前面的章節中已經介紹了一些 Python 常用的模塊,本節再介紹兩個模塊 datetime 模塊和 time 模塊,這兩個模塊主要用於轉換日期格式的功能。datetime模塊datetime 模塊是 Python 內置的功能模塊,它可以實現對日期的算數運算,以指定的方式格式化日期。