IntlDateFormatter php 日本年份转换 return false for 2019
IntlDateFormatter php japanese year convertion return false for 2019
我要转换
令和元年8月 = 2019年8月
参考 https://www.conservapedia.com/Japanese_dates
我得到这些
为此,我尝试了如下代码“平成 31 年 8 月”返回 2019 年,但根据 ref 它应该 令和元年 8 月
请建议我是否有任何解决方案,以便我可以像参考一样设置我的代码..
$formatter = new IntlDateFormatter(
'ja_JP@calendar=japanese',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'Europe/Madrid',
IntlDateFormatter::TRADITIONAL,
'Gy年M月'
);
$ts = $formatter->parse('令和元年8月');
//$ts = $formatter->parse('平成31年8月');
var_dump($ts, date('Y-m', $ts));
好像有两个问题。
- 日本纪元系统不按年份切换,而是按一年中的日期切换
平成(Heisei) 结束于 2019-04-30,令和(Reiwa) 开始于 2019-05-01,所以如果您需要的话,您提到的年度 table 不完整在转换年份(例如 2019)中转换特定日期。
例如1月平成31和12月令和1都是公元2019年,所以当你只转换年份部分时,它们会显示相同的结果。
- PHP并不总是有最新的table里面
在我的本地,“$formatter->parse('令和元年8月');”返回 1970-01,Unix 纪元时间可能来自空值。发生这种情况是因为我使用 PHP 但不知道日本纪元改为令和。
IntlDateFormatter 在 pecl php_intl 扩展中,调用 ICU 库。 ICU 图书馆 supports the new era name 令和 at its verion 64.2.
您可以使用 "ICU version" 检查您的 phpinfo(),如果它小于 64.2,它就不会正确地转换指令和。
$ php --info | grep "ICU version"
ICU version => 61.1
如果您在最新可用的 PHP 上找不到 64.2+,您可能需要自己用以后的 ICU 库编译 intl 扩展。
我要转换
令和元年8月 = 2019年8月
参考 https://www.conservapedia.com/Japanese_dates
我得到这些
为此,我尝试了如下代码“平成 31 年 8 月”返回 2019 年,但根据 ref 它应该 令和元年 8 月 请建议我是否有任何解决方案,以便我可以像参考一样设置我的代码..
$formatter = new IntlDateFormatter(
'ja_JP@calendar=japanese',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'Europe/Madrid',
IntlDateFormatter::TRADITIONAL,
'Gy年M月'
);
$ts = $formatter->parse('令和元年8月');
//$ts = $formatter->parse('平成31年8月');
var_dump($ts, date('Y-m', $ts));
好像有两个问题。
- 日本纪元系统不按年份切换,而是按一年中的日期切换
平成(Heisei) 结束于 2019-04-30,令和(Reiwa) 开始于 2019-05-01,所以如果您需要的话,您提到的年度 table 不完整在转换年份(例如 2019)中转换特定日期。
例如1月平成31和12月令和1都是公元2019年,所以当你只转换年份部分时,它们会显示相同的结果。
- PHP并不总是有最新的table里面
在我的本地,“$formatter->parse('令和元年8月');”返回 1970-01,Unix 纪元时间可能来自空值。发生这种情况是因为我使用 PHP 但不知道日本纪元改为令和。
IntlDateFormatter 在 pecl php_intl 扩展中,调用 ICU 库。 ICU 图书馆 supports the new era name 令和 at its verion 64.2.
您可以使用 "ICU version" 检查您的 phpinfo(),如果它小于 64.2,它就不会正确地转换指令和。
$ php --info | grep "ICU version"
ICU version => 61.1
如果您在最新可用的 PHP 上找不到 64.2+,您可能需要自己用以后的 ICU 库编译 intl 扩展。