DateFormatUtils 24小时制和12小时制

本文介绍了一个关于Java日期格式化的问题,当使用特定格式化字符串时,如何区分12小时制与24小时制。通过调整格式化字符串中的小写hh为大写HH,可以将时间从12小时制转换为24小时制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Date date=new Date();

DateFormatUtils.format(date,"yyyyMMddhhmmss");

如果时间是上午的没有问题。如果是下午的话,比如:2013-07-29 16:33:44。但是返回的结果是:20130729043344。是12小时制的。

后来在网上找到答案。如果想要24小时制的。则需写成大写的HH。

DateFormatUtils.format(date,"yyyyMMddHHmmss");

### DateFormatUtils.format 方法使用示例 `DateFormatUtils.format` 是 Apache Commons Lang3 库中的一个静态方法,用于将日期对象格式化为字符串。此方法提供了多种重载形式来满足不同的需求。 #### 基本用法 最简单的调用方式只需要提供 `Date` 对象以及期望的时间模式即可: ```java import org.apache.commons.lang3.time.DateFormatUtils; public class DateExample { public static void main(String[] args) { String pattern = "yyyy-MM-dd HH:mm:ss"; System.out.println(DateFormatUtils.format(new java.util.Date(), pattern)); } } ``` 上述代码会按照指定的格式打印当前时间[^1]。 #### 处理时区差异 当涉及到不同时区的数据处理时,可以传递第三个参数给该函数,即目标时区的对象实例(TimeZone 类型),从而实现跨时区转换功能: ```java import org.apache.commons.lang3.time.DateFormatUtils; import java.util.TimeZone; public class TimeZoneExample { public static void main(String[] args) { String pattern = "yyyy-MM-dd'T'HH:mm:ssZ"; TimeZone gmt8 = TimeZone.getTimeZone("GMT+08:00"); System.out.println(DateFormatUtils.format(System.currentTimeMillis(), pattern, gmt8)); } } ``` 这段程序能够把毫秒数表示的时间戳转成带有时区偏移量的 ISO 8601 字符串,并指定了东八区作为输出标准[^2]。 #### 高效地重复利用缓冲区 为了提高性能,在频繁执行相同操作的情况下可以选择带有 StringBuffer 参数的形式,这样可以在一定程度上减少垃圾回收的压力: ```java import org.apache.commons.lang3.time.DateFormatUtils; public class BufferReuseExample { private final static ThreadLocal<StringBuffer> bufferHolder = new ThreadLocal<>(); public static void main(String[] args) throws InterruptedException { String pattern = "yyyyMMdd"; // 初始化线程局部变量持有的StringBuffer if (bufferHolder.get() == null){ bufferHolder.set(new StringBuffer()); } long startTime = System.currentTimeMillis(); for(int i=0;i<100_000;i++){ DateFormatUtils.format(startTime+i*1000L,pattern,bufferHolder.get()).toString(); } } } ``` 通过这种方式,可以在多轮循环内持续复用同一个字符缓存空间,适用于高并发场景下的日志记录等场合[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值