如何在Java中按November 28, 2022格式输出日期及带AM/PM的时间
Java日期格式化:输出指定格式的带AM/PM标识的时间
你的问题出在SimpleDateFormat的格式模式字符串上,原模式"dd-MM-yyyy hh:mm:ss a"对应「日-月-年 时:分:秒 AM/PM」的输出,和你需要的「November 28, 2022 11:45:43 AM」格式不匹配,调整格式模式即可解决。
修正方案(旧API)
使用正确的格式模式"MMMM dd, yyyy hh:mm:ss a",各部分含义:
MMMM:月份全称(如November)dd:两位数字日期(28)yyyy:四位数字年份(2022)hh:12小时制小时数mm:分钟ss:秒a:AM/PM标识
同时建议指定Locale.US,避免不同地区环境下月份显示为非英文:
import java.util.Date; import java.text.SimpleDateFormat; import java.util.Locale; public class DateFormatter { public static void main(String[] args) { Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("MMMM dd, yyyy hh:mm:ss a", Locale.US); String formattedDate = sdf.format(date); System.out.println(formattedDate); } }
推荐方案(Java 8+新API)
SimpleDateFormat存在线程不安全问题,Java 8及以上推荐使用java.time包下的新日期时间API,更稳定可靠:
import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Locale; public class ModernDateFormatter { public static void main(String[] args) { LocalDateTime now = LocalDateTime.now(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMMM dd, yyyy hh:mm:ss a", Locale.US); String formattedDate = now.format(formatter); System.out.println(formattedDate); } }
内容的提问来源于stack exchange,提问作者Priyanka Rani
相关产品推荐
相关产品推荐

