【QCon】精华内容上线92%,全面覆盖“人工智能+”的典型案例!>>> 了解详情
写点什么

可移植类库(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:281256
用户头像

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

关注

评论

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

直播程序源码技术分享主播邀请上麦功能

山东布谷科技

软件开发 程序 源码搭建 直播源码

何时使用Kafka而不是RabbitMQ

越长大越悲伤

Kafk Rabbit MQ 消息列队

Scrum看板工具在项目管理中的作用

顿顿顿

敏捷工具 scrum工具 scrum敏捷工具

【领域驱动设计专题】一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(通用语言体系)

洛神灬殇

领域驱动设计 DDD 领域驱动设计思想 领域驱动模型

零基础自学:2023年的今天,请谨慎进入网络安全行业

网络安全学海

黑客 网络安全 信息安全 计算机 渗透测试

接口测试|Fiddler设置手机抓包

霍格沃兹测试开发学社

IoT场景时序数据库性能对比报告出炉,TDengine 远超 InfluxDB & Timescal

电子信息发烧客

New Arrival: QCN9074 Dual Band/Tri-band 4X4 WIFI6 Network Card DR9074 (#QCN9074)

wallyslilly

QCN9074

唯一入选中国厂商!灵雀云获Gartner® 首份《DevOps平台魔力象限报告》“荣誉提及”

York

容器 DevOps 云原生 Gartner 平台工程

StarRocks & Friends 上海站活动回顾(含 PPT 下载链接)

StarRocks

数据库 OLAP MPP 大数据 开源

STC89C52+DHT20设计的环境温湿度检测仪

DS小龙哥

6 月 优质更文活动

搜索语义模型的大规模量化实践

百度Geek说

paddle NLP 大模型 企业号 6 月 PK 榜 6 月 优质更文活动 INT8

最佳实践|亚马逊可持续发展的架构模型

亚马逊云科技 (Amazon Web Services)

JavaScript

接口测试|Fiddler弱网测试

霍格沃兹测试开发学社

如何通过场景规划帮助企业实现全面预算管理?

智达方通

智达方通 全面预算管理 财务规划和分析 财务规划与预测 全面预算管理系统

小程序容器技术在移动警务中的业务价值

FinFish

小程序容器 移动警务 警务app

复旦大学智能计算平台与世界科学智能大赛启动仪式

新云力量

智能 计算 复旦大学

接口测试|Fiddler抓包设置及证书配置

霍格沃兹测试开发学社

强化学习从基础到进阶-常见问题和面试必知必答[6]:演员-评论员算法(advantage actor-critic,A2C),异步A2C、与生成对抗网络的联系等详解

汀丶人工智能

人工智能 深度学习 强化学习 6 月 优质更文活动

Go语言中的init函数: 特点、用途和注意事项

EquatorCoco

编程 Go 语言

什么是区块链?

TiAmo

区块链 去中心化 6 月 优质更文活动

浅析 Jetty 中的线程优化思路

vivo互联网技术

jetty EatWhatYouKill 线程策略

李彦宏:AI原生应用比大模型数量更重要

飞桨PaddlePaddle

人工智能 百度 paddle 大模型

强化学习从基础到进阶-案例与实践[6]:演员-评论员算法(advantage actor-critic,A2C),异步A2C、与生成对抗网络的联系等详解

汀丶人工智能

人工智能 深度学习 强化学习 6 月 优质更文活动 A3C算法

一图看懂华为云CodeArts Board5大特性,带你玩转看板服务

华为云PaaS服务小智

云计算 数据可视化 华为云 企业研发管理 数据看板

Flutter性能优化的一些路径思考

Onegun

flutter 移动开发

华为开发者大会—开发者的一站式代码检查利器:华为云代码检查CodeArts Check

华为云PaaS服务小智

云计算 华为云 华为开发者大会2023

Selenium 中并行测试的重要性

FunTester

2024深圳电子展,中国国际电子信息博览会(CITE电博会)

AIOTE智博会

电子展

es笔记一之es安装与介绍

Hunter熊

elasticsearch Kibana 安装Kibana

解决QT QGraphicsView提升到QChartView报错的问题

攻城狮Wayne

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