Java DateTime格式化实现与Calendar.getInstance输出等效的方案咨询
实现方案
你需要构造对应格式的DateTimeFormatter即可实现需求,目标格式对应的模式字符串为EEE MMM dd HH:mm:ss zzz yyyy,注意需要指定英文Locale,避免非英文环境下星期、月份显示为本地语言。
代码示例
// 构造符合要求的格式化器 DateTimeFormatter targetFormatter = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US); // 1. 直接格式化ZonedDateTime(推荐,本身自带时区信息) ZonedDateTime zdt = ZonedDateTime.now(); String formattedZdt = targetFormatter.format(zdt); System.out.println("格式化后ZonedDateTime :: " + formattedZdt); // 2. 格式化LocalDateTime需要先绑定时区,因为LocalDateTime本身无时区信息,无法直接输出时区标识 LocalDateTime ldt = LocalDateTime.now(); // 绑定你需要的时区,比如亚洲/加尔各答时区对应IST ZonedDateTime ldtWithZone = ldt.atZone(ZoneId.of("Asia/Kolkata")); String formattedLdt = targetFormatter.format(ldtWithZone); System.out.println("格式化后LocalDateTime :: " + formattedLdt);
输出效果
运行后输出和你给出的Calendar格式完全一致:
格式化后ZonedDateTime :: Fri Aug 27 13:21:29 IST 2021 格式化后LocalDateTime :: Fri Aug 27 13:21:29 IST 2021
格式符说明
EEE:短格式星期名称(对应示例中的Fri)MMM:短格式月份名称(对应示例中的Aug)dd:两位日期(对应示例中的27)HH:mm:ss:24小时制时分秒(对应示例中的13:21:29)zzz:短格式时区标识(对应示例中的IST)yyyy:4位年份(对应示例中的2021)
内容的提问来源于stack exchange,提问作者Som
相关产品推荐
相关产品推荐

