0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用 Java 原生格式化Instant

科技绿洲 来源:Java技术指北 作者:Java技术指北 2023-10-09 14:51 次阅读

今天我们将聊聊如何在Java中把一个 Instant 格式化为一个字符串。我们将展示如何使用 Java 原生和第三方库(如Joda-Time)来处理这个事情。

使用 Java 原生格式化Instant

在 Java 8 中有个名为 Instant 类。通常情况下,我们可以使用这个类来记录我们应用程序中的事件时间戳。

让我们看看如何把它转换成一个字符串对象。

使用 DateTimeFormatter 类

一般来说,我们将需要一个格式化器来格式化一个即时对象。Java 8引入了DateTimeFormatter类来统一格式化日期和时间。

DateTimeFormatter 提供了 format() 方法来完成这项工作。

简单地说,DateTimeFormatter 需要一个时区来格式化一个 Instant 。没有它,它将无法将Instant 转换为人类可读的日期/时间域。

例如,让我们假设我们想用 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()方法来指定时区。

请记住,如果不能指定时区将导致 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 来实现同样的目标。这个库提供了一套随时可用的类和接口,用于在Java中操作日期和时间。

在这些类中,我们发现DateTimeFormat类。顾名思义,这个类可以用来格式化或解析进出字符串的日期/时间数据。

因此,让我们来说明如何使用DateTimeFormatter来将一个瞬间转换为一个字符串。

@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()来格式化即时对象。

总结

在这篇文章中,我们了解了如何在Java中把一个 Instant 格式化为一个字符串。

在这一过程中,我们了解了一些使用Java 原生方法来实现这一目标的方法。然后,我们解释了如何使用Joda-Time库来完成同样的事情。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2904

    浏览量

    102995
  • 格式化
    +关注

    关注

    2

    文章

    37

    浏览量

    8986
  • 应用程序
    +关注

    关注

    37

    文章

    3136

    浏览量

    56398
收藏 人收藏

    评论

    相关推荐

    NOKIA手机怎么格式化

    )以及 q9、t9字体运行的话,用此法格式化是无效的。所以,软格前,先把这些软件全部关闭,中文字体文件删除,才可格式化成功。字体文件一般在 system/fonts下,删除字体文件请用handyfile
    发表于 12-28 15:54

    u盘格式化不了

    本帖最后由 eehome 于 2013-1-5 09:46 编辑 一个4G的U盘,插入电脑后只是显示有磁盘插入,可是,点击后就出现U盘格式化的界面,格式化的时候又显示磁盘写有保护,怎么办啊?谢谢高手指点。
    发表于 09-14 15:41

    vrf格式化

    >是否有格式化函数或>某种方式我可以这样做?查看To String对象。这是VEE最灵活的格式化doodad。您可以定义字段宽度,填充字符,左对齐或右对齐,数字格式等。-SHAWN
    发表于 09-08 01:25

    STM32格式化代码问题

    目的是想实现数据存储,U盘拷出来,大致上是可以做出来了,不过发现还是有些小问题。 我的程序是直接用f_mkfs格式化了我的FLASH(W25Q64),也就是说插电脑不会再提示格式化。 数据
    发表于 10-25 11:46

    电脑格式化问题

    `原因是我想把电脑给格式化,但电脑却没有映像也没有恢复介质,后来我想到重装系统,现在就变成这样了,小白,求大神帮帮忙,`
    发表于 02-17 10:31

    如何对MicroSD卡格式化

    使用ESP32-CAM每隔几秒拍一张照片,并存储到SD卡中。ESP32-CAM成本约为40元,用过的MicroSD卡2.实验方法格式化MicroSD卡对MicroSD卡格式化,注意选择FAT32格式
    发表于 01-21 13:58

    说一说MounRiver Studio的代码格式化

    MounRiver Studio具有代码格式化功能,方法是右键选择某个c文件,点击“代码格式化”即可。这个功能只针对某个c或h文件,一键全工程代码格式化的功能入口还没有找到。 但代码格式化
    发表于 05-12 09:08

    请问keil怎么格式化代码?

    一直都是复制到格式化工具里 然后复制回来 不知道有没有快捷键格式化?
    发表于 11-08 06:32

    手机格式化新用户

    看小说新用户奖励,手机格式化之后换个号码还能领取新用户奖励,请问有大佬知道不格式化自己动手去删除根文件能达到格式化效果吗
    发表于 12-07 19:14

    格式化硬盘

    格式化硬盘 软盘只需要一次格式化,硬盘却需要两级,即低级格式化和高级格式化。  硬盘的低级格式化在每个磁片上划分
    发表于 12-25 15:40 1036次阅读

    笔记本硬盘维护之格式化

    笔记本硬盘维护之格式化篇   格式化硬盘(并非低格)会影响硬盘寿命吗?用Windows对硬盘进行格式化与对软盘进行格式化原理一样
    发表于 01-20 10:32 344次阅读

    笔记本硬盘格式化几点须知

    笔记本硬盘格式化几点须知  格式化硬盘(并非低格)会影响硬盘寿命吗?用Windows对硬盘进行格式化与对软盘进行格式化原理一样吗?
    发表于 01-23 14:15 631次阅读

    如何格式化硬盘

    如何格式化硬盘    这是广大电脑初学者经常询问的问题,因为格式化硬盘是安装装系统的前提,所以这就成为了需要首先解决的问题,本文将针这个
    发表于 02-24 11:25 384次阅读

    格式化是什么

    格式化(format)是指对磁盘或磁盘中的分区(partition)进行初始化的一种操作,这种操作通常会导致现有的磁盘或分区中所有的文件被清除。格式化通常分为低级格式化和高级格式化。如
    的头像 发表于 01-09 15:20 8.3w次阅读

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

    昨天在群里看到有小伙伴问,Java里如何解析SQL语句然后格式化SQL,是否有现成类库可以使用?
    的头像 发表于 04-10 11:59 607次阅读