ヨーロッパ/ロンドンとまったく同じ規則に従うカスタム(存在しない)TimeZoneを作成したいのですが、唯一の違いはオフセットがUTCから-5時間あることです。.NET NodaTimeどのようにカスタムTimeZoneを作成できますか?
テスト目的のために、これは私が試していたものです。どのように昼夜照明を指定するのですか?あるいは、この実装は完全に間違っていますか?
public class MyTimeZone : DateTimeZone
{
public MyTimeZone()
: base("MyTimeZone", true, Offset.FromHours(-5), Offset.FromHours(-5))
{
}
protected override bool EqualsImpl(DateTimeZone zone)
{
if (zone.Id == "MyTimeZone")
return true;
return false;
}
public override int GetHashCode()
{
return 0001;
}
public override NodaTime.TimeZones.ZoneInterval GetZoneInterval(Instant instant)
{
return new ZoneInterval("MyTimeZone", new Instant(DateTime.MinValue.Ticks), new Instant(DateTime.MaxValue.Ticks), Offset.FromHours(-5), Offset.FromHours(-5));
}
}
以前はNodaTimeを使ったことがありませんでしたが、私はあなたの 'GetHashCode'関数が完全に間違っていると伝えます。異なる値を識別するためには、比較的ユニークな値を返す必要があります。私はゾーンIDのハッシュコードを返すことをお勧めします。私の推測では、基本クラスはすでにそれのようなことをしているはずです。 –
ご返信ありがとうございます。私はそれを修正することを確認します。 –
NodaTimeにこれを簡単に行うためのAPIがあるとは思わないが、Jonがすぐにこれに答えてくれると確信している。 :)好奇心は、これのビジネス/アプリケーションのユースケースは何ですか?人々がカスタムタイムゾーンが必要だと言うと、私はいつも不思議です。私が経験した限り、実際の実際の使用量のほとんどは実際にはそれを必要としません。 –