mixiユーザー(id:6864704)

2020年02月19日22:33

227 view

元号変換、期間取得プログラムの改良

僕は自宅でたまにプログラミングをやっているのですが、
今回は、自分が作った元号変換プログラムと期間取得プログラムの改良に
ついて書こうと思います。

元号変換プログラムですが、西暦から元号に、または元号から西暦に変換
というのをやっていたのですが、そのプログラムはその元号の期間の
範囲外の月日を指定したらエラーにするようにしていたのですが、
どうも歴史の本を読んでいたら、源平合戦の時代の元号の「元暦」に改元
された時は、平家の人たちは前の元号の「寿永」と使っていたとか
元号が「寿永」やその前の元号の「養和」の時は、源氏の人たちは、
さらに前の元号の「治承」を使っていたとかそのような話を聞きますので
だったらその元号の終了日以降の年月日を指定しても対応できるように
しました。

どのように改良したかと言えば、元号から西暦に変換するプログラムで
その元号の終了日以降の年月日を指定した場合も西暦に変換して、
さらに正しい元号と年も取得するように改良しました。
例えば、「慶応5年」と入力すれば「1869年」と変換して、さらに「明治2年」
と出力します。あと、「平成32年」と入力すれば「2020年」と変換して、
さらに「令和2年」と出力します。

期間取得プログラムですが、1582年10月4日まではユリウス暦で、翌日は
グレゴリオ暦で1582年10月15日となることから1582年10月4日までは
ユリウス暦で計算し、1582年10月15日からはグレゴリオ暦で計算するような
関数を作りました。これについては、1582年10月をまたがる所が大変でした。
2つの暦で計算しないといけないですし、日数計算になると削除された
10日分を引かないといけません。そして、そのための計算のパターンも
色々とあったのでそのあたりが大変でした。こうして戯れに作ったプログラム
ですが、これがホームページで展開している元号の統計データを作るのに
とても役に立ちました。

あと、ホームページで展開している自分のコスプレの統計データを作っている
時に期間の平均値を出しているのですが、日数だけだと何年何ヶ月なのか
分からないですし、かと言って起点となる日付のないので計算ができないと
思っていたのですが、このような日数を何年何ヶ月に変換できるプログラムが
あれば良いなと思い作成しました。

方法としましては、開始日を2000年3月1日としました。なぜこの日なのかと
言えば、400年振りのうるう日である2000年2月29日の翌日だからです。
その日から日数を足した日付を取得する関数(これはプログラムで用意されて
います)を使って終了日を割り出してあとは期間取得プログラムを呼んで
計算するプログラムを作りました。これでコスプレの統計データを出した時に
何年何ヶ月なのか分かりやすくなって便利でした。

こんな感じでプログラムの関数を改良したり作ったりしていました。
これでプログラミングもだいぶ便利になったので良かったです。
2 0

コメント

mixiユーザー

ログインしてコメントを確認・投稿する

<2020年02月>
      1
2345678
9101112131415
16171819202122
23242526272829