BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース ポータブルクラスライブラリがNoda Timeをサポート

ポータブルクラスライブラリがNoda Timeをサポート

原文(投稿日:2013/04/15)へのリンク

 

高度な日付/時間ライブラリであるNoda TimeがWindows 8、Windows Phone 7、および Windows Phone 8で利用できるようになった。このバージョンもまた、NuGetパッケージと包括的なユーザーズ ガイドを提供している。

Noda timeは、その型システムをローカルとグローバルの2つのカテゴリーに分ける。

ローカル型は、どのタイムゾーンともバインドされていないが、カレンダーコンポーネントを含む事ができる。これは、 DateTimeKindを未指定にセットしたDateTime クラスに似ている。しかし、 Noda Timeはまた、時間と日付の値のみもサポートしている。

グローバル型は、Instantの概念を基にしている。インスタントは、普遍的なタイムライン内の特定の瞬間だ。他のシステムとの互換性のために、1970 年 1 月 1 日、UTC (Unix エポック)からのタイマー刻み(ティック) に基づいている。1ミリ秒が10,000 ティックでかなり高い解像度を実現している。ただ注意して欲しいのは、いくつかの科学機器は ティックを用いて10-18秒の精度で時間を測定することができることだ。

ZonedDateTimeのような幾つかのクラスは、インスタントとタイムゾーン情報を組み合わせる。DateTimeOffsetと違って、ZonedDateTimeは、ユーザーに提示される必要のある実際のタイムゾーン情報を持っている。

ドキュメントにあるこの変換図は、コアの型がどう関係しているのかを示している。

 

BCLよりもNoda Timeが優れている別の点は、歴史的な時間のサポートである。BCLの DateTimeクラスは、年の最小値が1 CEである。Noda Timeは、約27000 BCEをサポートするので, 古代エジプトと中国間のタイムラインを比較する必要のあるアプリでそれを使うことができる。

Noda Timeは、 Windows と Olson タイムゾーンデータベースの両方をサポートする。政府はしばしば、タイムゾーンの法律を変えるので、Noda Timeによってデータベースのもっと最近バージョンを取り込める。

Noda Timeでは, Period と Duration は、違う意味になる。Duration は、ティックで測れる一定の時間である。Periodは、抽象概念で“1ヶ月” 、 “2週間”などである。 “Periodで表された経過時間は一定していない。1月1日に加えられた "1ヶ月" は、2月1日に加えられる時よりも実質長い。なぜなら2月は、いつも1月よりも短いからである。”

JavaのJoda Timeを基にした Noda Timeは、既存の.NET date/time クラスにある問題の多くを解決するように設計されている。例えば、これによって開発者は、時間コンポーネント無しで直接日付を表現でき、不要なタイムゾーンの変換のために、誤って “12月10日真夜中” を“12月9日午後11時” に変えてしまう問題を排除できる。

テストをサポートするために、Noda Timeは、IClock interfaceを提供している。これは、SystemClock と FakeClockによって実装されており、一度初期化すれば、FakeClockは手動でインクリメントでき、あるいは自分で一定量インクリメントするように自動インクリメントに設定できる。

Noda Timeは、Apache Licenseの下で提供されている。

 

この記事に星をつける

おすすめ度
スタイル

BT