0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用 Java 原生格式化Instant

科技綠洲 ? 來源:Java技術(shù)指北 ? 作者:Java技術(shù)指北 ? 2023-10-09 14:51 ? 次閱讀

今天我們將聊聊如何在Java中把一個 Instant 格式化為一個字符串。我們將展示如何使用 Java 原生和第三方庫(如Joda-Time)來處理這個事情。

使用 Java 原生格式化Instant

在 Java 8 中有個名為 Instant 類。通常情況下,我們可以使用這個類來記錄我們應用程序中的事件時間戳。

讓我們看看如何把它轉(zhuǎn)換成一個字符串對象。

使用 DateTimeFormatter 類

一般來說,我們將需要一個格式化器來格式化一個即時對象。Java 8引入了DateTimeFormatter類來統(tǒng)一格式化日期和時間。

DateTimeFormatter 提供了 format() 方法來完成這項工作。

簡單地說,DateTimeFormatter 需要一個時區(qū)來格式化一個 Instant 。沒有它,它將無法將Instant 轉(zhuǎn)換為人類可讀的日期/時間域。

例如,讓我們假設(shè)我們想用 dd.MM.yyyy 格式來顯示我們的即時信息實例。

public class FormatInstantUnitTest {
    
    private static final String PATTERN_FORMAT = "dd.MM.yyyy";

    @Test
    public void givenInstant_whenUsingDateTimeFormatter_thenFormat() {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(PATTERN_FORMAT)
        .withZone(ZoneId.systemDefault());

        Instant instant = Instant.parse("2022-04-21T15:35:24.00Z");
        String formattedInstant = formatter.format(instant);

        assertThat(formattedInstant).isEqualTo("21.04.2022");
    }
}

如上所示,我們可以使用withZone()方法來指定時區(qū)。

請記住,如果不能指定時區(qū)將導致 UnsupportedTemporalTypeException。

@Test(expected = UnsupportedTemporalTypeException.class)
public void givenInstant_whenNotSpecifyingTimeZone_thenThrowException() {
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern(PATTERN_FORMAT);

    Instant instant = Instant.now();
    formatter.format(instant);
}

使用toString()方法

另一個解決方案是使用toString()方法來獲得即時對象的字符串表示。

讓我們用一個測試案例舉例說明toString()方法的使用。

@Test
public void givenInstant_whenUsingToString_thenFormat() {
    Instant instant = Instant.ofEpochMilli(1641828224000L);
    String formattedInstant = instant.toString();

    assertThat(formattedInstant).isEqualTo("2022-01-10T15:23:44Z");
}

這種方法的局限性在于,我們不能使用自定義的、對人友好的格式來顯示即時信息。

Joda-Time庫

另外,我們也可以使用 Joda-Time API 來實現(xiàn)同樣的目標。這個庫提供了一套隨時可用的類和接口,用于在Java中操作日期和時間。

在這些類中,我們發(fā)現(xiàn)DateTimeFormat類。顧名思義,這個類可以用來格式化或解析進出字符串的日期/時間數(shù)據(jù)。

因此,讓我們來說明如何使用DateTimeFormatter來將一個瞬間轉(zhuǎn)換為一個字符串。

@Test
public void givenInstant_whenUsingJodaTime_thenFormat() {
    org.joda.time.Instant instant = new org.joda.time.Instant("2022-03-20T10:11:12");
        
    String formattedInstant = DateTimeFormat.forPattern(PATTERN_FORMAT)
        .print(instant);

    assertThat(formattedInstant).isEqualTo("20.03.2022");
}

我們可以看到,DateTimeFormatter提供forPattern()來指定格式化模式,print()來格式化即時對象。

總結(jié)

在這篇文章中,我們了解了如何在Java中把一個 Instant 格式化為一個字符串。

在這一過程中,我們了解了一些使用Java 原生方法來實現(xiàn)這一目標的方法。然后,我們解釋了如何使用Joda-Time庫來完成同樣的事情。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2980

    瀏覽量

    105718
  • 格式化
    +關(guān)注

    關(guān)注

    2

    文章

    39

    瀏覽量

    9188
  • 應用程序
    +關(guān)注

    關(guān)注

    38

    文章

    3305

    瀏覽量

    58212
收藏 人收藏

    評論

    相關(guān)推薦

    MDK使用AStyle進行代碼自動格式化

    MDK使用AStyle進行代碼自動格式化
    的頭像 發(fā)表于 09-19 14:22 ?3822次閱讀
    MDK使用AStyle進行代碼自動<b class='flag-5'>格式化</b>

    如何對MicroSD卡格式化

    使用ESP32-CAM每隔幾秒拍一張照片,并存儲到SD卡中。ESP32-CAM成本約為40元,用過的MicroSD卡2.實驗方法格式化MicroSD卡對MicroSD卡格式化,注意選擇FAT32格式
    發(fā)表于 01-21 13:58

    格式化硬盤

    格式化硬盤 軟盤只需要一次格式化,硬盤卻需要兩級,即低級格式化和高級格式化?! ∮脖P的低級格式化在每個磁片上劃分
    發(fā)表于 12-25 15:40 ?1109次閱讀

    筆記本硬盤維護之格式化

    筆記本硬盤維護之格式化篇   格式化硬盤(并非低格)會影響硬盤壽命嗎?用Windows對硬盤進行格式化與對軟盤進行格式化原理一樣
    發(fā)表于 01-20 10:32 ?380次閱讀

    筆記本硬盤格式化幾點須知

    筆記本硬盤格式化幾點須知  格式化硬盤(并非低格)會影響硬盤壽命嗎?用Windows對硬盤進行格式化與對軟盤進行格式化原理一樣嗎?
    發(fā)表于 01-23 14:15 ?689次閱讀

    如何格式化硬盤

    如何格式化硬盤    這是廣大電腦初學者經(jīng)常詢問的問題,因為格式化硬盤是安裝裝系統(tǒng)的前提,所以這就成為了需要首先解決的問題,本文將針這個
    發(fā)表于 02-24 11:25 ?513次閱讀

    硬盤無法格式化如何處理

    硬盤無法格式化如何處理   筆者有一塊20GB的長城硬盤,出現(xiàn)了故障,無法正常使用,就連格式化都不能順利通過,閑置一旁已多日
    發(fā)表于 02-24 11:39 ?8292次閱讀

    如何格式化c盤

    如何格式化c盤 咨詢這個問題的朋友,相信一定是電腦的初學者,而且跳過了DOS系統(tǒng)的年代。單單就這個問題的回答,傳統(tǒng)的方法是
    發(fā)表于 03-01 10:22 ?2w次閱讀

    格式化對硬盤有傷害嗎_硬盤格式化后數(shù)據(jù)還能恢復嗎

    普通的格式化硬盤是不會影響硬盤壽命的。硬盤格式化后數(shù)據(jù)還能恢復嗎?下面就來看看使用強力數(shù)據(jù)是如何將格式化后的數(shù)據(jù)給恢復的吧。
    發(fā)表于 12-14 16:09 ?1.7w次閱讀

    格式化是什么

    格式化(format)是指對磁盤或磁盤中的分區(qū)(partition)進行初始的一種操作,這種操作通常會導致現(xiàn)有的磁盤或分區(qū)中所有的文件被清除。格式化通常分為低級格式化和高級
    的頭像 發(fā)表于 01-09 15:20 ?8.6w次閱讀

    關(guān)于MDK-ARM代碼格式化插件AStyle

    MDK-ARM代碼格式化插件AStyle
    的頭像 發(fā)表于 03-07 16:34 ?2555次閱讀

    D盤無法格式化的解決方法分享

    電腦的使用windows7系統(tǒng)過程中,發(fā)現(xiàn)電腦磁盤的有一些不需要的文件想直接格式化,由于自己的電腦D盤太亂,想要格式化D盤。
    的頭像 發(fā)表于 08-10 16:25 ?5493次閱讀
    D盤無法<b class='flag-5'>格式化</b>的解決方法分享

    printf格式化輸出符號參數(shù)詳解

    printf格式化輸出符號參數(shù)詳解
    發(fā)表于 07-06 09:12 ?21次下載

    python字符串格式化

    python字符串格式化 格式化輸出,主要有三種方式 使用 % 進行格式化 使用 format 函數(shù)進行格式化 使用 f-string 進行格式化
    的頭像 發(fā)表于 02-21 16:28 ?1673次閱讀
    python字符串<b class='flag-5'>格式化</b>

    Java中如何解析、格式化、生成SQL語句?

    昨天在群里看到有小伙伴問,Java里如何解析SQL語句然后格式化SQL,是否有現(xiàn)成類庫可以使用?
    的頭像 發(fā)表于 04-10 11:59 ?1086次閱讀