2023-12-20
后端
00
请注意,本文编写于 220 天前,最后修改于 67 天前,其中某些信息可能已经过时。

本周做数据迁移从Oracle导出的UNL文件(其实也就是CSV文件)导入到Mysql中,发现了一个很有意思的时间类型,然后需要从java转换。类型是26-AUG-23

经过度娘查询英文输出月份是用MMM,也就是用new SimpleDateFormat("MMM")代码转换,代码如下:

java
public static void main(String[] args) { // 创建一个日期对象 Date date = new Date(); // 使用SimpleDateFormat进行日期格式化,包含月份的英文缩写 SimpleDateFormat sdf = new SimpleDateFormat("MMM"); String monthAbbreviation = sdf.format(date).toUpperCase(); System.out.println("Month Abbreviation: " + monthAbbreviation); }

看似没有问题,但是控制台输出,输出:Month Abbreviation: 十二月,百思不得解。那就点进去源码看下。

image-20231219224757501

可以看到方法中调用了构造器传了区域设置,而默认中获取的时系统本地的区域,所以点进Locale会发现如图:

image-20231219225159799

所以传入英文,改动代码如下:

java
SimpleDateFormat sdf = new SimpleDateFormat("MMM", Locale.ENGLISH);

ok,输出Month Abbreviation: DEC。完美。

本文作者:酷少少

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!