Java中日期格式化

发布时间:2024年01月23日

日期格式化

LocalDateTime time = LocalDateTime.now();
System.out.println(time);  //2024-01-23T00:37:28.268258300

DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String stringTime = f.format(time);
System.out.println(stringTime);  //2024-01-23 00:37:28

比如有一个日期是LocalDateTime、LocalDate或LocalTime类型的,想要转为形如2024-01-23 00:37:28,这就叫日期的格式化,格式化后得到的是字符串

上方,HH代表格式化后得到的字符串中的小时是24小时制的,如果写成hh就是12小时制的
为了区分上午还是下午,需要在pettern后添加a,即yyyy-MM-dd HH:mm:ss a
使用yyyy-MM-dd HH:mm:ss生成的是2024-01-23 12:37:28 上午,为什么是上午而不是AM,因为Java会自动根据当前环境信息自行决定,一般情况,都是中文环境(zh CN),所以生成上午,怎么生成AM?DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss a", Locale.ENGLISH)
还有一种方法,在IDEA中修改运行配置,添加虚拟机选项为-Duser.language=en -Duser.country=US,添加后可以查看环境信息

// 获取当前JVM的默认本地化环境
Locale currentLocale = Locale.getDefault();

// 输出当前的本地化环境信息
System.out.println("Default Locale: " + currentLocale.getLanguage() + "_" + currentLocale.getCountry());  //en_US

注意,LocalDateTime 是Java 8引入的新时间API中的类,而 SimpleDateFormat 是旧版日期/时间API中的类,它无法直接处理 LocalDateTime 类型的对象,如下就是错的

LocalDateTime time = LocalDateTime.now();
System.out.println(time);

SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String stringTime = f.format(time);

但是DateTimeFormatter可以处理旧的时间API,但是需要进行多层转化,很麻烦,感兴趣的可以稍微了解一下~
新的时间API:java.time.xxx
旧的时间API:java.util.xxx

从Java 8开始,推荐使用新的日期时间API(java.time),如LocalDateTime、LocalDate、LocalTime等,新API在功能完备性、代码简洁性、线程安全性和国际兼容性等方面均优于旧API,所以被推荐作为开发的新选择,详细原因感兴趣可以自行了解~~

旧的时间API使用示例

Date date = new Date();

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss aa");  //在旧的中,a和aa都可以,新的只能a
System.out.println(simpleDateFormat.format(date));
文章来源:https://blog.csdn.net/2301_78164643/article/details/135740424
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。