当前位置: 首页 > news >正文

Java 解析日期格式各个字段含义温习

背景

今天解析了一个不常见的日期格式 「10-Mar-2025 16:30:47.869」,对应的 Java 日期格式是 dd-MMM-yyyy HH:mm:ss.SSS ,而且跟 Local 语言环境有关。

本文记录这个简单的解析过程,顺便回忆一下日期格式各个字段。毕竟平时只用了常见的 yyyyMMddHHmmss 这种。最重要的一点,日期字符串的格式化和解析类跟 Local 语言环境有关。

日期字段说明

关于日期的各个字段说明如下

字段说明示例
G公元时代英文环境:AD;中文环境:公元
yy年份的后2位25
yyyy完整年份2025
MM月份,显示为 1-12 ,不足两位的前面补 004
MMM月份简写英文环境:Apr ;中文环境:4月
MMMM月份全称英文环境:April;中文环境: 四月
dd日,2 位数表示,不足两位前面补 002
d日,1-2 位显示2
EEE简写星期几英文环境:Thu;中文环境: 周四
EEEE全写星期几英文环境:Thursday;中文环境: 星期四
aa上下午英文环境:AM 或 PM;中文环境:上午或下午
H小时,24小时制7
HH小时,24小时制,不足两位前面补 007
h小时,12小时制7
hh小时,12小时制,不足两位前面补 007
m分,1-2位1
mm分,2位,不足两位前面补 001
s秒,1-2位1
ss秒,2位,不足两位前面补 001
S毫秒302
ZGMT(时区)+0800

测试

根据上面的全部的日期字段,设置两种包含内容最全的格式:

  1. 全写:G yyyy-MMMM-dd HH:mm:ss.SSS EEEE aa Z
  2. 简写:G yy-MMM-d H:m:s.SSS EEE aa Z

编写代码,使用这两种格式打印当前时间:

String fullPattern = "G yyyy-MMMM-dd HH:mm:ss.SSS EEEE aa Z";
String simplePattern = "G yy-MMM-d H:m:s.SSS EEE aa Z";
SimpleDateFormat format1 = new SimpleDateFormat(fullPattern);
SimpleDateFormat format2 = new SimpleDateFormat(simplePattern);
System.out.println("中文环境下");
System.out.println("完整 G yyyy-MMMM-dd HH:mm:ss.SSS EEEE aa Z 的结果:"+format1.format(new Date()));
System.out.println("简写 G yy-MMM-d H:m:s.SSS EEE aa Z 的结果:"+format2.format(new Date()));

System.out.println("英文环境下");
Locale.setDefault(Locale.ENGLISH);

SimpleDateFormat formatEn = new SimpleDateFormat(fullPattern);
SimpleDateFormat formatEn2 = new SimpleDateFormat(simplePattern);
System.out.println("完整 G yyyy-MMMM-dd HH:mm:ss.SSS EEEE aa Z 的结果:"+formatEn.format(new Date()));
System.out.println("简写 G yy-MMM-d H:m:s.SSS EEE aa Z 的结果:"+formatEn2.format(new Date()));

String time = "24-Mar-2025 21:10:31.791";
SimpleDateFormat parseFormat = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss.SSS", Locale.ENGLISH);
try {
    Date t = parseFormat.parse(time);
    System.out.println("解析结果:"+t);
} catch (ParseException e) {
    throw new RuntimeException(e);
}

运行结果:
在这里插入图片描述
即当前时间,中英文环境下的全称如下:

  1. 中文:公元 2025-四月-10 18:47:24.508 星期四 下午 +0800
  2. 英文:AD 2025-April-10 18:47:24.523 Thursday PM +0800

启示录

详细的看了看各个字段的含义,还是挺有启发的,尤其是星期和月份的缩写和全写在中文环境下的细微区别。全写的星期和月份用于更正式的语言环境下,月份的全称是汉字数字大写形式。

一招鲜的技术说好吧也好,不好吧,也太寡闻了,除了常用的9个字段,其他基本没有听过。还有一个疑惑,为什么星期的字段名称用了 E 而不是 W 呢,星期的英文不是 Week 么?

相关文章:

  • 福建省人民政府驻京办windows优化大师使用方法
  • 绵阳市网站建设长沙seo结算
  • 怎么做网站链接支付抖音seo推广
  • 常德做网站多少钱广告推广免费发布
  • 宿州网站建设企业培训机构排名
  • 怎么做网站的学校的大图培训机构网站设计
  • QML 中 Z 轴顺序(z 属性)
  • L2-034 口罩发放
  • 太阳能晶片计数系统 源代码
  • 开源推荐#5:CloudFlare-ImgBed — 基于 CloudFlare Pages 的开源免费文件托管解决方案
  • Qt 元对象系统探秘:从 Q_OBJECT 到反射编程的魔法之旅
  • 商品详情 API 返回数据字段说明
  • Java基础 - 反射(2)
  • dd命令刻录CENT OS10 (.iso)光盘镜像文件到U盘
  • 基于深度学习模型去预测材料的吸声性能
  • pytorch软件封装
  • Spring基本概念
  • 模拟-与-现实协同训练:基于视觉机器人操控的简单方法
  • Netty之ChannelOutboundBuffer详解与实战
  • 虚拟dom工作原理以及渲染过程
  • Ruoyi-vue plus 5.2.2 flowble 结束节点异常错误
  • 基于CNN-BiLSTM-GRU的深度Q网络(Deep Q-Network,DQN)求解移动机器人路径规划,MATLAB代码
  • 30天学Java第八天——设计模式
  • mmrotate训练自己的数据(记录)
  • 使用多进程和 Socket 接收解析数据并推送到 Kafka 的高性能架构
  • 使用js创建img加载阿里云oss图片跨域的问题