写点什么

Java 9 的日期时间格式化趋近 Unicode 区域设置标准

  • 2017-02-19
  • 本文字数:1137 字

    阅读完需:约 4 分钟

一系列在解析和格式化上的改进已集成到 Java 9 中,这些改进让相关功能更趋近于 Unicode 区域设置数据标记语言(LDML,Locale Data Markup Language)。上述改进由 Stephen Colebourne 负责,他是被广为采用的日期时间库 JodaTime 的创建者,还先导了 Java 8 中新 java.time 组件。遵循 Unicode 标准将为 Java 9 提供与其他非 Java 系统间更好的互操作性。

LDML 是 Unicode 通用区域设置数据资源库 (CLDR,Common Locale Data Repository)所使用的语言。作为 Unicode 联盟的项目之一,CLDR 用于从世界各地收集并存储区域设置数据,这样应用开发人员可使程序更好地适应不同的文化。特别需要说明的是,LDML 可解决日期、时间和时区上的问题,尤其是日期的格式化与解析。下面列出一些从 Java 9 中抽出的新特性,这些新进入 Java 9 的特性使得 java.time 更趋近 LDML 规范。

  • JDK-8148947 ,DataTimeFormatter 的模式字母“g”:正如在 LDML 中定义的,字母“g”指代一个“简化儒略日期”,简化儒略日期与正常儒略日期的差别在于:(1)简化儒略日期取决于本地时间,而非 GMT;(2)简化儒略日期中将午夜作为天的划分,而不是中午。
  • JDK-8155823 ,添加了日期时间模式“v”和“vvvv”:LDML 格式“v”用于表示“通用非位置格式”(Generic Non-Location Format),例如“太平洋时间”。而 LDML 格式“vvvv”表示由特定城市所定义的“通用位置格式”(Generic Location Format),例如“洛杉矶时间”。
  • JDK-8148949 ,DataTimeFormatter 的模式字母“A”、“n”、“N”:虽然不同于“n”和“N”,“A”是在 LDML 中定义的,但是当前 Java 的行为并未遵循 LDML 规范。规范中使用“A”表示一天中已过去的时间,以毫秒为单位,表示值的宽度可变。但是当前 Java 实现为固定宽度,即模式“AA”将不能解析任何大于 99 毫秒的值。“n”和“N”是 Java 对规范的一个扩展,分别表示一秒中已过去的纳秒值,以及一天中已过去的纳秒值。
  • JDK-8079628 ,包含“DD”格式的 java.time.format.DateTimeFormatter 对象在处理三位的积日值(Day-of-Year)时发生失败:类似于上面的固定宽度问题,只是用‘D’表示一位积日值。模式“DD”无法将“123”解析成一年中的第 123 天。

如上所述,Java 9 更好地看齐 LDML 将会简化整个系统中的互操作性,这是由于不少技术已在不同程度上采用了 LDML。稍提一些,Microsoft .Net 使用 LDML 进行常规的区域设置数据互换,Node.js 和 Ruby 也具有可用的软件包。

查看英文原文: Date and Time Formatting in Java 9 Will Get Closer to Unicode Locale Standards


感谢薛命灯对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-02-19 18:002481
用户头像

发布了 227 篇内容, 共 78.8 次阅读, 收获喜欢 28 次。

关注

评论

发布
暂无评论
发现更多内容

食堂就餐系统 UML 图

睁眼看世界

极客大学架构师训练营 食堂就餐系统

第一周总结

睁眼看世界

极客大学架构师训练营

食堂就餐卡系统设计

天天向上

极客大学架构师训练营

超详细超级细B站视频爬取

海绵宝宝re儿

python 爬虫 多进程

解构 Dubbo-go 的核心注册引擎 Nacos

apache/dubbo-go

dubbogo

有了数据湖探索服务,企业决策“新”中有数

华为云开发者联盟

Serverless 数据湖 数据分析 云原生 华为云

架构师训练营大作业二

qihuajun

iOS面试梳理 - 2020年8月初

iOSer

ios 面试

小码农也有大目标,最新BAT大厂Java面试总结

Java架构师迁哥

开发者说:愿为你点亮“懂环境知冷暖”智能的灯

华为云开发者联盟

人工智能 物联网 NB-IoT 路灯 华为IoT平台

Spring-技术专题-重试机制Retry机制

码界西柚

【性能优化】小伙伴问我性能指标监控怎么做,这次我安排上了!!

冰河

tomcat 性能优化 监控 性能调优 jvm调优

第一周总结

黄立

架构师 架构总结

互联网架构师能力图谱

dony.zhang

架构师 架构师技能

第一周学习心得

alpha

极客大学架构师训练营

使用枚举的正确姿势

Java旅途

Java 单例 枚举

架构师训练营大作业一

qihuajun

食堂就餐卡系统设计

发酵的死神

极客大学架构师训练营

为什么我选择清晨阅读和学习

胡迪伦

学习 效率 自学编程 早起 晨型人

一个敏捷教练成长必备的8项技能

华为云开发者联盟

程序员 敏捷 敏捷开发 敏捷教练 技术技能树

Skywalking Php注册不上问题排查

心平气和

php Skywalking 全链路追踪

“锟斤拷”的前世今生

Java旅途

Unicode 编码 ASCII 锟斤拷

拖动旋转的 3D 骰子效果

Clloz

CSS transform rotate3d

你有没有想过为什么交易和退款要拆开不同的表?

程序员小航

设计 开发 交易 拆表

架构师训练营大作业

方堃

架構師訓練營第1期-第01周總結

Panda

SpringCloud Gateway 身份认证

Barry的异想世界

微服务 nacos 权限系统 Gateway spring cloud alibaba

10大高性能开发宝石

码界西柚

极客大学架构师训练营 0 期 结课作业

chun1123

架构师 架构师技能

防止重复点击2.0

老菜鸟

Vue

食堂就餐卡系统设计

Gosling

极客大学架构师训练营

Java 9的日期时间格式化趋近Unicode区域设置标准_Java_Abraham Marín Pérez_InfoQ精选文章