PHPの新元号対応について #phpstudy #phperkaigi
概要
第136回 PHP勉強会@東京で話した内容「PHPの新元号対応について」をブログに書き起こします。 phpstudy.doorkeeper.jp 登壇資料は、こちらです。
なお、こちらはPHPerKaigi 2019(本編2日目3/31(日)13:30-14:30/Track C)にて登壇します。 phperkaigi.jp
出張版PHP勉強会@東京 in PHPerKaigi 2019(本編2日目3/31(日)13:30-14:30/Track C)にLTの発表が追加になりました!
— PHP勉強会@東京 (@phpstudy) 2019年3月28日
「PHPの新元号対応について」 @sapi_kawahara さんです。
ぜひご参加ください!https://t.co/n3s7grUT8n #phpstudy #phperkaigi
新元号について
※「㋿」←こちらは新元号になる予定の文字フォントです、㍻31年3月29日の時点では表示されません。
- 新元号の発表は㍻31年4月1日(月)
です、なお公表時間は決まってません午前11時30分に発表されます。 - ㋿元年5月1日(水)の「天皇の即位の日」に新元号に変わります。
- Windows 10、Mac OSX、iOS、Android OSなど、元号を表示するOSは、新元号発表後にアップデート配布で対応されます。
- 和暦表示対応
- 合字フォント対応
- UNIX系ではLinux系の一部が和暦に対応しているのでアップデートが必要です、(BSD系は非対応、Mac OSXもBSD系)確認方法はこちらです。
LC_TIME=ja_JP.utf8 date +'%EY'
dateとDateTime::format()クラスの対応
- 和暦に対応していないので、対応は不要です、PHPのバージョンアップも不要です。
- 独自実装なら、エポックミリ秒「1546300800000」を判定に使ってください。
strftimeの対応
- こちらはC言語のライブラリーから表示をしているだけなので、対応は不要です、PHPのバージョンアップも不要です。
- 和暦に対応したLinuxのみ対応が必要、Linuxのアップデートが必要です、確認方法はこちらです、対応が必要なOSなら平成31年と表示されます。
setlocale(LC_TIME, "ja_JP.utf8", "Japanese_Japan.932"); print strftime('%EC%Ey年');
Normalizerの対応
- 対応が必要です。
- 新元号発表後、PHPなどのアップデートがあれば、PHP5系はPHP自体の差し替え、PHP7系はPECL intlとintl(国際化用拡張)モジュールの差し替えが必要です。
- CakePHP3はintlモジュールが必須なので、元号を使ってなくても更新するのが望ましいと思われます。
- 確認方法はこちらです、㍻ではなく平成と表示されるはずです。
print normalizer_normalize("㍻", Normalizer::FORM_KC);