写点什么

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:002707
用户头像

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

关注

评论

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

解锁电商精准营销新纪元:深度剖析阿里巴巴商品详情API的无限潜能

代码忍者

API 测试 pinduoduo API

PIRF-409: Memories-Just ask

Echo!!!

English

数据结构之美-深入理解树形结构

巧手打字通

数据结构 索引结构 随机森林 二叉搜索树 数据库索引

征程 6E/M 快速上手实战 Sample-Codec

地平线开发者

自动驾驶 算法

MES系统与其他系统的集成:提升制造业智能化的关键路径

万界星空科技

数字化转型 系统集成 ERP mes 智能制造业

成功塑造孩子的人生,这一步很关键!

心大陆多智能体

智能体 AI大模型 心理健康 数字心理

地平线占用预测 FlashOcc 参考算法-V1.0

地平线开发者

自动驾驶 算法

从数据仓库到数据中台再到数据飞轮:金融行业的数据技术进化史

桃花键神

什么是即时通讯平台

BeeWorks

即时通讯平台是什么?

BeeWorks

缓存雪崩/穿透/击穿/失效原理图/14种缓存数据特征+10种数据一致性方案

肖哥弹架构

Java redis 缓存

读书笔记:一分钟成为优秀管理者

老张

读书笔记 团队管理 认知提升 管理者

淘宝商品详情API返回值中的预售与定制信息解析

代码忍者

API 测试 pinduoduo API

MES系统助力塑料制品行业数字化转型

万界星空科技

制造业 mes 万界星空科技 注塑行业 塑料制品行业

金融行业中如何利用数据中台的数据来有效的驱动业务决策呢?

桃花键神

macOS Ventura 13.7 (22H123) 正式版发布,ISO、IPSW、PKG 下载

sysin

macos ventura

凡人歌:平凡公司的技术面试

iofomo

生活 职业成长 #面试

TAG:BladeLLM 的纯异步推理架构

阿里云大数据AI技术

人工智能 tag LLM推理 BladeLLM

来重庆工作2年,想念广东了

程序员晚枫

程序员

【Paper Reading】结合 NanoFlow 研究,优化大语言模型服务效率的探索

阿里云大数据AI技术

人工智能 大语言模型 NanoFlow

数据中台进化为数据飞轮的必要

桃花键神

IM即时通讯软件,WorkPlus助力企业高效协作的企业级即时通讯系统

BeeWorks

企业级即时通讯平台有哪些?探究适合企业使用的即时通讯工具

BeeWorks

有哪些好用的企业级即时通讯平台推荐

BeeWorks

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