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


    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许可提供。

  • 相关阅读:
    vscode识别预览markdown文件
    工具:静态资源服务器server
    vscode配置easy sass 生成压缩和未压缩的css文件
    cocos Create简单记录
    小程序AR云识别
    小程序被冻结 解冻方法
    vscode设置px转换为rem
    js 打印文本
    .net 启动进程并执行某方法
    c# 创建文件夹、压缩成zip格式并下载
  • 原文地址:https://www.cnblogs.com/shihao/p/3029788.html
Copyright © 2020-2023  润新知