|
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Objectto.tetramorph.kyuureki.KyuurekiAlmanac
public class KyuurekiAlmanac
グレゴリオ暦を定気法による日本の旧暦(天保暦)に変換する暦。
変換可能な範囲は1820-12-02から2100-11-30まで。
旧暦は新月の日を暦月の1日目とするため、タイムゾーンの影響を受け、時差が変化すれ
ば暦も変化してしまう。たとえば日本で深夜0時から1時に新月を迎えた日、台湾や中国
時間ではまだ前日で、台湾時間で暦を作れば暦月の開始が1日過去の方向にずれて
一ヶ月の日数も1日増えることになる。
データを増やせばもっと期間を拡張することもできるが、実用範囲はカバーしている
と思われる。現在のデータは約30KBである。
日付をインクリメントしながら参照した場合と、ランダムにした場合ではかなり速度
に差がある。これはすべての旧暦データをもっているわけではなく、新月とその暦月の
データをもっていて、要求に応じてその月のカレンダーを生成しキャッシュするため
で、キャッシュが効率的に機能すれば応答は速くなる。ランダムだとキャッシュは
有効に働かず、そのつどカレンダーを作り直すので効率が低下する。
サポートしている期間のうち約55500日分の日付で実験したところ、インクリメントの
ときは0.26秒、ランダムのときは9.9秒、デクリメントのときは0.42秒だった。
サマータイムによる時差補正はTimeZoneの実装に依存している。
日本で1948-1951年まで実施されたサマータイムは、実装に含まれていない。
(と思う、多分)
コンストラクタの概要 | |
---|---|
KyuurekiAlmanac()
デフォルトのタイムゾーンでKyuureki オブジェクトを作成する |
メソッドの概要 | |
---|---|
KyuurekiDate |
getKyuurekiDate(Calendar cal)
カレンダーで指定されたグレゴリオ暦の年月日を旧暦に変換して返す。 |
KyuurekiDate |
getKyuurekiDate(Calendar cal,
double lon)
カレンダーで指定されたグレゴリオ暦を、サマータイムの実施の有無、 観測地の時差を考慮して時刻補正し旧暦に変換して返す。 |
KyuurekiDate |
getKyuurekiDate(Calendar cal,
double lon,
KyuurekiSupplement sap)
カレンダーで指定されたグレゴリオ暦を、サマータイムの実施の有無、 観測地の時差を考慮して時刻補正し旧暦に変換して返す。 |
KyuurekiDate |
getKyuurekiDate(int year,
int month,
int day)
グレゴリオ暦を旧暦に変換して返す。 |
List<KyuurekiDate> |
getKyuurekiDateList(int year,
int month,
int day,
int length)
グレゴリオ暦で指定された日から指定日数分の旧暦データを返す。 |
int |
getMaximumRange()
変換可能なグレゴリオ暦の最後の日付を返す。" |
int |
getMinimumRange()
変換可能なグレゴリオ暦の最初の日付を返す。" |
TimeZone |
getTimeZone()
このオブジェクトが使用しているタイムゾーンを返す。 |
static void |
main(String[] args)
|
protected void |
setTimeZone(TimeZone timeZone)
タイムゾーンをセットする。 |
クラス java.lang.Object から継承されたメソッド |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
---|
public KyuurekiAlmanac()
メソッドの詳細 |
---|
protected void setTimeZone(TimeZone timeZone)
public TimeZone getTimeZone()
public int getMaximumRange()
public int getMinimumRange()
public KyuurekiDate getKyuurekiDate(int year, int month, int day)
year
- 年month
- 月(1-12)day
- 日(1-31)
IllegalArgumentException
- 変換可能な範囲外の日付が指定されたとき。public KyuurekiDate getKyuurekiDate(Calendar cal)
public KyuurekiDate getKyuurekiDate(Calendar cal, double lon)
public KyuurekiDate getKyuurekiDate(Calendar cal, double lon, KyuurekiSupplement sap)
cal
- 日付とタイムゾーンをセットしたカレンダーlon
- 観測地の経度(±0〜180)sap
- 計算の補足情報を返すオブジェクトpublic List<KyuurekiDate> getKyuurekiDateList(int year, int month, int day, int length)
length
- 取り出す日数。
IllegalArgumentException
- 暦範囲外の日時やlengthに0以下の値が
入力されたとき。public static void main(String[] args)
|
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |