0

symfony 2は独自のDateTimeToLocalizedStringTransformerでintlDateFormatterを使用しますが、正しく機能しません。

$tz = new DateTimeZone('Europe/Moscow');
$date = new DateTime('1 march', $tz);


echo "PHP: " . phpversion() . "<br/>\n";
echo "Intl: " . phpversion('intl') . "<br/>\n";
echo "<br/>\n";

echo "TZ: " . $tz->getName() . "<br/>\n";

echo "Native:<br/>\n";
echo $date->format('H:i:s d.m.Y');
echo "<br/>\n";


echo "Intl:<br/>\n";
$formatter = new IntlDateFormatter('RU_ru', IntlDateFormatter::FULL, IntlDateFormatter::FULL, $tz->getName());
echo $formatter->format($date);
echo "\n";

結果が出ました

PHP: 5.3.22-1~dotdeb.0
Intl: PECL-2.0.1
TZ: Europe/Moscow

Native:
00:00:00 01.03.2013
Intl:
28 february 2013 23:00:00

やってみます

pecl install timezonedb
pecl install intl

そしてlibicu44を再インストールします

4

1 に答える 1

1

私はこれを得る:

<?php
$tz = new DateTimeZone('UTC');
$date = new DateTime('1 march', $tz);

echo "ICU data version: ", INTL_ICU_DATA_VERSION, "\n";
$formatter = new IntlDateFormatter('RU_ru', IntlDateFormatter::FULL,
        IntlDateFormatter::FULL, "Europe/Moscow");
echo $formatter->format($date), "\n";
ICU データ バージョン: 4.4.0.1
2013 年 1 月 1 日。3:00:00 Московское стандартное время

モスクワは現在、一年中 UTC+4 であるため、これは間違っています。ただし、これはかなり最近の開発 (DST はほんの数年前に放棄された) であるため、ICU データは古すぎてこれを反映できません。より新しいバージョンの ICU でテストすると、正しい結果が得られます。

ICU データ バージョン: 49.1
2013 年 1 月 1 日、午前 4 時 00 分
于 2013-03-08T11:15:36.953 に答える