元号を西暦に入れ替えるプログラミング!世界の人に日本を知ってもらう為に…

Toshiaki Kanda 2014年10月03日 金曜日
0 people like this post

KNNのプログラムチャンネルはこちらから!
https://4knn.tv/category/program/

WordPress 関連のチャネルはこちらから!
https://4knn.tv/category/wordpress/

プログラム歴は、もう大学時代のFortran や COBOL、そしてBASIC時代から数えて30余年のキャリアとなる。

ほとんどのプログラム言語で、書けるプログラムは、”Hello world” のみだ(笑)
しかし、そんなネタは今年で卒業するつもりだ。

コードを書かない限り、絶対にプログラマーにはなれはしない。しかし、今からスーパープログラマーとして未踏プロジェクトまでのつもりはない。それだったら、テニス区民大会のシニアで出場のほうが簡単だ!

むしろ、プログラムを知っているレベルにはなる必要がある。
そこで、今一番やってみたいのが、

元号(昭和とか平成)とかの年代を西暦におきかえるプログラムである

海外の人が、翻訳ソフトを使って日本のサイトにアクセスできても、いつもこの元号でおかしくなって、海外と比較できないからだ。
また、日本の行政の文書もすべて元号記載なので、極秘文書になってしまっている。

世界史と日本史の世界も別の科目になっているのも問題だ。アメリカのゴールドラッシュとペリーの来航は同じ流れだ。

そこで、まずは、和暦と西暦を日本以外の国が見たら、調整できるプログラム、 javaがいいのかPHPがいいのかはわからないが、それをつくるためのメモ書きのスタートです。

【1】 日付の関数について

[PHP]strtotime()、mktime() で「今日から3ヶ月後」の月を表示させる処理
http://www.webantena.net/php/strtotime-mktime-date/

date() 関数のフォーマット

参考までに、上の例で出てきた「Y」とか「H」とか「i」など、PHP の date() 関数のフォーマットについては、ピックアップして以下にまとめてみました。
Y 年(西暦4ケタ 例:2013)
m 月(01~12)
n 月(1〜12)
d 日(01〜31)
H 時(00〜23)
G 時(0〜23)
i 分(00〜59)
s 秒(00〜59)

参考ページ
http://php.net/manual/ja/function.date.php

なるほど、PHPでこれを「変数」として設定すればいいんだ。

しかし、平成26年を西暦2014年 と変換してくれるような普遍的な、よりどころはどこにあるんだろうか?

むしろ、自分で紀元前の西暦から、世界の各国の元号をあわせた国家プロジェクト並みのことをシコシコテキストファイルで書き起こすべきか(笑)。

とりあえず、備忘録としての、date関数として、今日はここまで。

 

format

http://php.net/manual/ja/function.date.php

出力される日付文字列の書式。以下のオプションを参照ください。 定義済みの定数 も用意されており、たとえば DATE_RSS はフォーマット文字列 ‘D, d M Y H:i:s’ と同じ意味になります。

以下の文字が format パラメータ文字列として認識されます
format文字説明戻り値の例
d日。二桁の数字(先頭にゼロがつく場合も)01 から 31
D曜日。3文字のテキスト形式。Mon から Sun
j日。先頭にゼロをつけない。1 から 31
l (小文字の ‘L’)曜日。フルスペル形式。Sunday からSaturday
NISO-8601 形式の、曜日の数値表現 (PHP 5.1.0 で追加)。1(月曜日)から7(日曜日)
S英語形式の序数を表すサフィックス。2 文字。st, nd, rd またはthjと一緒に使用する ことができる。
w曜日。数値。0 (日曜)から 6 (土曜)
z年間の通算日。数字。(ゼロから開始)0 から 365
WISO-8601 月曜日に始まる年単位の週番号 (PHP 4.1.0 で追加)例: 42 (年の第 42 週目)
F月。フルスペルの文字。January からDecember
m月。数字。先頭にゼロをつける。01 から 12
M月。3 文字形式。Jan から Dec
n月。数字。先頭にゼロをつけない。1 から 12
t指定した月の日数。28 から 31
L閏年であるかどうか。1なら閏年。0なら閏年ではない。
oISO-8601 形式の年。これは Y ほぼ同じだが、ISO 週番号 (W)が前年あるいは翌年に属する場合がある点で 異なる(PHP 5.1.0 で追加)。例: 1999 あるいは2003
Y年。4 桁の数字。例: 1999または2003
y年。2 桁の数字。例: 99 または 03
a午前または午後(小文字)am または pm
A午前または午後(大文字)AM または PM
BSwatch インターネット時間000 から 999
g時。12時間単位。先頭にゼロを付けない。1 から 12
G時。24時間単位。先頭にゼロを付けない。0 から 23
h時。数字。12 時間単位。01 から 12
H時。数字。24 時間単位。00 から 23
i分。先頭にゼロをつける。00 から 59
s秒。先頭にゼロをつける。00 から 59
uマイクロ秒 (PHP 5.2.2 で追加)。 date() の場合、これは常に 000000 となることに注意しましょう。というのも、 この関数が受け取るパラメータはinteger 型だからです。 一方 DateTime::format() はマイクロ秒にも対応しています。例: 654321
タイムゾーン
eタイムゾーン識別子(PHP 5.1.0 で追加)例: UTC, GMT,Atlantic/Azores
I (大文字の i)サマータイム中か否か1ならサマータイム中。 0ならそうではない。
Oグリニッジ標準時 (GMT) との時差例: +0200
Pグリニッジ標準時 (GMT) との時差。時間と分をコロンで区切った形式 (PHP 5.1.3 で追加)。例: +02:00
Tタイムゾーンの略称例: EST, MDT
Zタイムゾーンのオフセット秒数。 UTC の西側のタイムゾーン用のオフセットは常に負です。そして、 UTC の東側のオフセットは常に正です。-43200 から50400
全ての日付/時刻
cISO 8601 日付 (PHP 5 で追加されました)2004-02-12T15:19:21+00:00
r» RFC 2822 フォーマットされた日付例: Thu, 21 Dec 2000 16:01:07 +0200
UUnix Epoch (1970 年 1 月 1 日 0 時 0 分 0 秒) からの秒数time() も参照

フォーマット文字列中の認識されない文字は、そのまま表示されます。 Z 形式は、 gmdate() で使用した場合、常に 0 を返します。

 

KNNのプログラムチャンネルはこちらから!
https://4knn.tv/category/program/

Category: program
  • 0
  • 235
Toshiaki Kanda