写点什么

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

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

关注

评论

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

车家互联再获重磅突破,小度携手极越开启智能生活无限畅联新体验

新消费日报

软件测试/人工智能|什么是LangChain,这篇文章告诉你

霍格沃兹测试开发学社

软件测试/人工智能|LangChain Memory模块:开启语言数据的存储与回忆之旅

霍格沃兹测试开发学社

PDF Expert for Mac(PDF编辑阅读转换器)v3.7.1永久激活版

mac

PDF Expert 苹果mac Windows软件 PDF 编辑器和注释器

软件测试/人工智能|探究 LangChain 核心模块:PromptsModelsParsers

霍格沃兹测试开发学社

SourceTree 4.1.5(Git客户端工具)

Geek_幻墨成诗

sourcetree SourceTree Mac

高效聚合 | AIRIOT智慧虚拟电厂管理解决方案

AIRIOT

智慧电厂 智慧工厂 数字化工厂

Web前端开发技术:图像与多媒体文件

不在线第一只蜗牛

前端 Web 图像处理

初创企业太“烧钱”?华为云轻量应用服务器激活创业新思维

平平无奇爱好科技

性能优化的一般策略及方法

不在线第一只蜗牛

性能优化 优化 优化策略

通过亚马逊云科技云存储服务探索云原生应用的威力

亚马逊云科技 (Amazon Web Services)

云原生 S3 ebs 云存储服务 EFS

GPTs大受欢迎但问题多,企服软件厂商的AI Agent更被B端客户器重

王吉伟频道

AI Agent AI智能体 RPA Agent GPTs RPA智能体

什么是代理IP?代理IP有什么作用?

Geek_bf375d

爬虫 HTTP 跨境电商 IP\ #HTTP

如何运用AppLink平台中的数据连接器组件

RestCloud

MySQL APPlink

助力企业实现更简单的数据库管理,ATOMDB 与 TDengine 完成兼容性互认

TDengine

tdengine 时序数据库

上传图片到京东api接口的申请步骤有哪些特别之处?

技术冰糖葫芦

AI 模型编译器 API 开发

随手写了个博客多平台发布脚本:Python自动发布文章到Wordpress

爱写字的阿城

华为云耀云服务器L实例助力企业行稳致远

平平无奇爱好科技

创业有术,烧钱有道丨华为云为初创企业指明发展之路

平平无奇爱好科技

Python读取Ansible playbooks返回信息

不在线第一只蜗牛

Python sql 表单设计

如何获取item_question_answer-淘宝评论问答列表api接口

技术冰糖葫芦

AI 模型编译器 API 文档 COMSOL Multiphysics

🔥🔥Java开发者的Python快速进修指南:自定义模块及常用模块

快乐非自愿限量之名

Java Python 开发语言

开启数字化转型新纪元,华为云引领轻量应用服务器创新

平平无奇爱好科技

DAZ Studio for Mac(专业三维人物动画制作工具) 4.20.0.17永久激活版

mac

苹果mac Windows软件 DAZ Studio Pro 3d人物动画制作软件

如何正确选型低代码、无代码、aPaaS平台?有这几个重点

互联网工科生

低代码 无代码 aPaaS

大模型助力交互式数据挖掘的探索与发现

鲸品堂

数据挖掘 大模型

凭实力碾压友商!中小企业网站建设盲选华为云这款轻量应用服务器

平平无奇爱好科技

快速渡过新手期!华为云服务器让小程序开发的试错成本更低

平平无奇爱好科技

【scipy 基础】--空间计算

快乐非自愿限量之名

计算 模块 表空间 scipy

解密人工智能:线性回归

快乐非自愿限量之名

人工智能 机器学习 线性回归

数字化红利进入“下半场” ,华为云耀云服务器L实例全力构建中小企业磁力场

平平无奇爱好科技

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