ノーダタイム1.x用のマットの答えはスポットです。
ノーダタイム2.0では、基本的にはIClock
とDateTimeZone
の組み合わせであるZonedClock
を導入しています。あなたは同じタイムゾーンで現在の時刻を複数回使いたいと思うので、それを注入することができます(私はあなたが依存性注入を使用していると仮定しています)、それを保持してから使用してください。たとえば:
class SomeClass
{
private readonly ZonedClock clock;
internal SomeClass(ZonedClock clock)
{
this.clock = clock;
}
internal void DoSomethingWithDate()
{
LocalDate today = clock.GetCurrentDate();
...
}
}
あなたは、通常、例えば、IClock
を取り、新しい拡張メソッドのいずれかを使用してZonedClock
を提供しますそれは本当に財産すべきではないと私は(それが変わる方法与えられた)IClock
からNow
プロパティを削除しています - あなたの1.xのコードは、とにかく2.xで動作しません
var clock = SystemClock.Instance;
var zoned = clock.InUtc();
// Or...
var zoned = clock.InZone(DateTimeZoneProviders.Tzdb["Europe/London"];
// Or...
var zoned = clock.InTzdbSystemDefaultZone();
// Or...
var zoned = clock.InBclSystemDefaultZone();
注 - 今はGetCurrentInstant()
の方法です。
私はそれが好きです。 2.0はいつもより良く見えています! –