今天我们将聊聊如何在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()方法的使用。
@testpublic 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来将一个瞬间转换为一个字符串。
@testpublic 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库来完成同样的事情。
MediaTek ASIC服务推出硅验证的7nm制程112G远程SerDes IP
MT8195安卓核心板_MTK8195规格性能介绍
ABB工业机器人在机器人市场中的地位
人工智能技术包括哪些
颜值和音质都在线的AKG耳机
如何使用 Java 原生格式化Instant
高通发布物联网专用数据机9205 LTE,推进5G物联网进程
华为P11最新消息汇总:华为P11蓄势待发拯救华为P10闪存门事件,华为P11各种黑科技配置!
16:9光学透镜颠覆传统,让补光更清晰、均匀
爱立信截至到2019年底已获得了78份5G商用合同
了解SiC器件的命名规则
广和通入驻中国联通5G物联网OpenLab开放实验室,携手共赴5G扬帆新征程
基于MSP430单片机和HM1500温湿度传感器实现监控系统的设计
机器人柔顺控制系统原理详解
4种常见的MOS管栅极驱动电路,你用过几个?
近20亿元的长虹新能源绵阳锂电池项目举行开工
如何测量PWM波占空比
北汇信息于AES 2023第四届中国国际汽车以太网峰会发表DDS协议测试主题演讲
全球都只有8台,这24K 金定制版华为p10,再贵也得被抢疯啊
物联网在冬天的路上可以做些什么