Java中日期格式化

日期格式化

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));
  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值