写点什么

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

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

关注

评论

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

WIZMAP-大规模 embedding 向量的可视化交互工具

Zilliz

机器学习 深度学习 Embedding 交互式可视化工具

活动开启 | 以梦筑码 · 不负韶华 开发者故事征集令,讲出你的故事,有机会参加HDC.Together 2023

HarmonyOS开发者

HarmonyOS

2023-07-06:RabbitMQ中的AMQP是什么?

福大大架构师每日一题

Rabbit 福大大架构师每日一题

3DCAT实时云渲染助力VR虚拟现实迈向成熟

3DCAT实时渲染

实时渲染

代码随想录训练营 Day09 - 字符串(下)

jjn0703

PoseiSwap 更新第二期空投,持有 Zepoch 节点数量将决定空投回报

股市老人

云计算在商业运营中的潜力

天翼云开发者社区

云计算

为什么多数企业的数字化转型都失败了?

优秀

数字化转型 企业数字化 企业数字化 PaaS 平台

5个祖传的Python自动化办公项目,治愈你的抑郁

程序员晚枫

Python 微信 自动化 机器人 办公

知识图谱之《海贼王-ONEPICE》领域图谱项目实战(含码源):数据采集、知识存储、知识抽取、知识计算、知识应用、图谱可视化、问答系统(KBQA)等

汀丶人工智能

自然语言处理 知识图谱 信息抽取

拥抱抑郁,制心一处,一切美好是深度投入的产物

B Impact

手把手教学构建证券知识图谱/知识库(含码源):网页获取信息、设计图谱、Cypher查询、Neo4j关系可视化展示

汀丶人工智能

人工智能 自然语言处理 nlp 知识图谱

2023世界人工智能大会如约而至!低代码开发:点燃数智时代,让AI风口助您飞跃

不在线第一只蜗牛

人工智能 低代码 人工智能大会 行业风口

Kubernetes网络模型Overlay和Underlay

虚实的星空

国产化适配再进一步,融云完成欧拉、TDSQL、优炫等多方适配

融云 RongCloud

开源 运维 信创 融云 适配

在现场!2023世界人工智能大会

新云力量

人工智能 AI 人工智能大会

PoseiSwap 更新第二期空投,持有 Zepoch 节点数量将决定空投回报

BlockChain先知

中国大模型的落地DNA,写在这个双螺旋结构里

脑极体

AI

一次解决三大成本问题,升级后的 Zilliz Cloud 如何造福 AIGC 开发者?

Zilliz

SaaS Milvus Zilliz zillizcloud

人脸识别技术在医疗行业的应用

数据堂

人脸识别技术的优缺点及其在实际应用中的影响

数据堂

提升UE5写实效果的项目设置

3DCAT实时渲染

虚幻引擎5 UE5

PoseiSwap 更新第二期空投,持有 Zepoch 节点数量将决定空投回报

鳄鱼视界

研产供销数据一体化,解码汽车集团企业的数据治理之道

袋鼠云数栈

数字化转型

精彩回顾|【2023 ACDU 中国行·深圳站】数据库主题交流活动成功举办!

墨天轮

MySQL 数据库 oracle postgresql 腾讯云

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