2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

可移植类库(Portable Class Library)已支持 Noda Time

  • 2013-04-18
  • 本文字数:1062 字

    阅读完需:约 3 分钟

Noda Time 是用于.NET 的高级日期 / 时间库,其最新版本适用于 Windows 8、Windows Phone 7 和 Windows Phone 8。该版本还提供了 NuGet 包和全面的用户指南

Noda Time 将类型系统分为两类,即本地类型与全球类型。

本地类型不会绑定到任何时区,但可能会包含一个日历组件。这与 DateTimeKind 被设置 Unspecified 的 DateTime 类相似。此外,Noda Time 还支持只有时间或只有日期的值。

全球类型基于 Instant 的概念。一个 Instant 是通用时间系统中的某个特定时刻。为了与其他系统兼容,它以时间片(tick)为单位,从世界标准时间 1970 年 1 月 1 日(Unix 纪元)开始计算,这里每毫秒被划分为 1 万个时间片,从而能够支持非常高的精度。但应该指出的是,某些科学仪器能够以小到 10-18 秒的时间片来测量时间。

诸如 ZonedDateTime 等类会将 Instant 与时区信息结合起来。与 DateTimeOffset 不同,ZonedDateTime 包含了需要显示给用户的实际时区信息。

下面这幅来自其文档的转换图展现了这些核心类型是如何关联的:

与 BCL 相比,Noda Time 的另一个优势是对历史日期的支持。BCL 的 DateTime 类表示的最小值是公元元年。Noda Time 则支持表示到大约公元前 27000 年,可以用于应用中对古埃及和中国的年表进行的比较。

Noda Time 同时支持 Windows 和 Olson 时区数据库。由于各国政府经常会修改时区相关的法律,因此 Noda Time 允许开发者加入较新版本的数据库。

在 Noda Time 中,Period 和 Duration 有着不同的含义。Duration 表示一段固定长度的时间,可用时间片进行计量。而 Period 则是抽象的概念,例如“一个月”或“两周”。“由 Period 表示的时间流逝的总量并不是固定的:始于 1 月 1 日的‘一个月’,实际上比从 2 月 1 日开始的‘一个月’要长,因为 2 月总是比 1 月短。”

在面向 Java 的 Joda Time 的基础上,Noda Time 是为了修正.NET 日期/ 时间类中现存的许多问题而设计的。例如,它允许开发者直接表示日期而无需时间组件,从而避免不必要的时区转化将“12 月10 日零点”意外地变成“12 月9 日晚11 点”这样的问题。

Noda Time 提供了 IClock 接口以支持测试。它通过 SystemClock 和 FakeClock 实现。初始化之后就可以手动递增 FakeClock,或为它设置固定步长的自动增量。

Noda Time 基于 Apache 许可提供。

查看英文原文 Portable Class Library Support for Noda Time


感谢臧秀涛对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2013-04-18 09:281816
用户头像

发布了 256 篇内容, 共 86.4 次阅读, 收获喜欢 10 次。

关注

评论

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

KunlunBase指导手册(四)从 Oracle 实时同步数据到 KunlunBase

KunlunBase昆仑数据库

国产数据库

KunlunBase对MySQL私有DML语法的支持

KunlunBase昆仑数据库

国产数据库

商品管理功能越来越丰富,不愧是 Pro 系统!

CRMEB

SVN 修订版本关键字

攻城狮杰森

svn 关键字 7月月更

KunlunBase功能之insert/update/delete...returning语句

KunlunBase昆仑数据库

国产数据库

什么是“企业级”低代码?成为企业级低代码必须具备的5种能力

优秀

低代码 企业级低代码平台

腾讯一面:内存满了,会发生什么?

程序员小毕

程序员 腾讯 面试 程序人生 计算机

美团二面:为什么Redis会有哨兵?

Java全栈架构师

Java redis 程序员 面试 后端

性能测试中的随机数性能问题探索

FunTester

共享自助洗车是车主自己洗吗?

共享电单车厂家

共享自助洗车 自助洗车加盟 车白兔自助洗车

KunlunBase 指导手册(一)快速安装手册

KunlunBase昆仑数据库

国产数据库

心寄开源,合规护航!2022 开放原子全球开源峰会开源合规分论坛即将开幕

kk-OSC

开源 开源峰会 开放原子全球开源峰会 开源合规

连续4周上榜的这位开发者,活出了当代大学生该有的样子

OpenI启智社区

深度学习 开源 大学

ORACLE进阶(十四)转义字符讲解

No Silver Bullet

oracle delete 转义字符 7月月更 TRUNCATE

阿里内网GC面试小册,仅7天Github获赞96.9K

程序知音

Java 阿里巴巴 程序员 后端 JVM

【容器篇】Docker实现资源隔离的秘籍

技术小生

Docker 7月月更

KunlunBase指导手册(二)对等部署最佳实践

KunlunBase昆仑数据库

国产数据库

小数据量用户场景使用KunlunBase的价值

KunlunBase昆仑数据库

KunlunBase的Fullsync高可用机制简介

KunlunBase昆仑数据库

国产数据库

面试官:Linux操作系统里一个进程最多可以创建多少个线程?

Java全栈架构师

程序员 多线程 操作系统 计算机 java面试

无人自助洗车项目如何?好不好做

共享电单车厂家

自助洗车加盟 车白兔自助洗车 无人自助洗车项目

SAP Fiori @OData.publish 注解的工作原理解析

汪子熙

SAP Fiori SAP UI5 ui5 7月月更

AITSM:看人工智能如何重塑IT服务管理

云智慧AIOps社区

人工智能 运维 安全 监控 IT管理

A tour of gRPC:04 - gRPC unary call 一元调用

BUG侦探

gRPC RPC protocolBuffer

KunlunBase指导手册(三)数据导入&同步

KunlunBase昆仑数据库

国产数据库

KunlunBase 0.9.1版本Sysbench性能测试报告

KunlunBase昆仑数据库

国产数据库

昆仑数据库 MySQL 连接协议简介

KunlunBase昆仑数据库

国产数据库

Kunlun-Storage vs PostgreSQL OLTP 测试

KunlunBase昆仑数据库

国产数据库

KunlunBase 读写分离方案

KunlunBase昆仑数据库

自助洗车更轻松更自在的洗车方式

共享电单车厂家

自助洗车 自助洗车加盟 车白兔自助洗车

可移植类库(Portable Class Library)已支持Noda Time_.NET_Jonathan Allen_InfoQ精选文章