Functions/cd_calendar - NCL tips

時間の配列をカレンダーでの表現に近い値に変換する関数。
時間はある時点からの日数や時間などで表されることが多いが,それを何年何月何日のような値に変換する。

date = cd_calendar(time, opt)

〔入力変数〕

time

時間の値が入った配列。単位(@units)を持っている必要がある。"days since 1951-1-1" や "hours after 1-1-1 00:00:00" のように,"単位 から 基準" の形で表現される。単位としては,

seconds, minutes, hours, days, months, years

が有効。単位と基準をつなぐ「から」を意味する英単語は,

since, after, from, ref

が有効。
また,カレンダーの種類を表す@calendarを持っている場合にはそれが反映される。デフォルトでは time@calendar = "standard" として扱われ,これはグレゴリオ暦の1582年10月15日でユリウス暦からグレゴリオ暦に切り替わるような,最も現実的な(歴史に忠実な)カレンダーである。@calendarは他にも,

"gregorian"(グレゴリオ暦),"julian"(ユリウス暦),"proleptic_gregorian"(グレゴリオ暦を施行前まで使用する),
"360_day","360","365_day","365","366_day","366",
"noleap","no_leap"(閏年なし),"allleap","all_leap"(毎年閏年)

が有効である。ちなみに,4年に1回閏年があるのがユリウス暦で,400年に97回閏年があるのがグレゴリオ暦である。暦上の春分の日と天文学的な春分とのずれが無視できなくなったため,ローマ教皇グレゴリウス13世によって導入された(春分の日の次の満月の次の日曜日が復活祭と定義されるため,これは当時の教会にとって大問題であった)。


opt

どのような出力を得たいかを決める整数。

opt = 0 の場合:dimsizes(time)の右に6の大きさの次元が加わった配列をfloat型で返す。このとき,

date(:,0) → 年
date(:,1) → 月
date(:,2) → 日
date(:,3) → 時
date(:,4) → 分
date(:,5) → 秒

となっている。

opt = ±1 の場合:YYYYMMの値を,1ならdouble型で返し,-1ならinteger型で返す。(double型の場合でも値はinteger型の場合と同じである。小数付きで得られるわけではない。opt=4の場合を除き以降も同様。)

opt = ±2 の場合:YYYYMMDDの値を,2ならdouble型で返し,-2ならinteger型で返す。

opt = ±3 の場合:YYYYMMDDHHの値を,3ならdouble型で返し,-3ならinteger型で返す。このオプションは大きな値を返すので,時間の範囲が2147年を超えるときは3を使ってほしいとのこと。

opt = 4 の場合:YYYY+1年に対する割合の値をdouble型で返す。つまり,2000年のちょうど半ばの時刻であれば,date = 2000.5 が得られる。

opt = -5 の場合:0と同じものをinteger型で返す。ただし秒の情報が失われる。


〔出力変数〕

date

timeからoptにしたがって得られたカレンダー的な値。


トップ   編集 凍結 添付 名前変更   新規