(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)
IntlDateFormatter::setLenient -- datefmt_set_lenient β Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΌΡΠ³ΠΊΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°
ΠΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΡΠΈΠ»Ρ
ΠΡΠΎΡΠ΅Π΄ΡΡΠ½ΡΠΉ ΡΡΠΈΠ»Ρ
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΠ΅ΠΆΠΈΠΌ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΡΡΡΠΎΠ³ΠΈΠΌ ΠΈΠ»ΠΈ ΠΌΡΠ³ΠΊΠΈΠΌ ΠΏΡΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΡΠΎΡΠ½ΠΎΡΡΠΈ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΡΠ°Π±Π»ΠΎΠ½Ρ. ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΡΠ³ΠΊΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Ρ Π΄Π°ΡΡ ΠΈΠ»ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠΈΡΠ½ΠΈΠΉ ΠΏΡΠΎΠ±Π΅Π», Π½Π΅ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π½Π½ΡΠ΅ ΡΠΎΠΊΠ΅Π½Ρ ΠΈΠ»ΠΈ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ("February 30th") Π½Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ.
formatterΠ Π΅ΡΡΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
lenient
Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΌΡΠ³ΠΊΠΈΠΌ ΠΈΠ»ΠΈ Π½Π΅Ρ, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ true (ΠΌΡΠ³ΠΊΠΈΠΉ).
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»Π°ΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΠΈΠ»ΠΈ false, Π΅ΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°.
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ datefmt_set_lenient()
<?php
$fmt = datefmt_create(
'en_US',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'America/Los_Angeles',
IntlDateFormatter::GREGORIAN,
'dd/MM/yyyy'
);
echo 'ΠΡΠ³ΠΊΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ : ';
if ($fmt->isLenient()) {
echo 'ΠΠ';
} else {
echo 'ΠΠΠ’';
}
datefmt_parse($fmt, '35/13/1971');
echo "\nΠΠΎΠΏΡΡΠΊΠ° ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡ '35/13/1971'.\nΠ Π΅Π·ΡΠ»ΡΡΠ°Ρ : " . datefmt_parse($fmt, '35/13/1971');
if (intl_get_error_code() != 0) {
echo "\nΠ‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ : " . intl_get_error_message();
echo "\nΠΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ : " . intl_get_error_code();
}
datefmt_set_lenient($fmt, false);
echo "\nΠ’Π΅ΠΏΠ΅ΡΡ ΠΌΡΠ³ΠΊΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ : ";
if ($fmt->isLenient()) {
echo 'ΠΠ';
} else {
echo 'ΠΠΠ’';
}
datefmt_parse($fmt, '35/13/1971');
echo "\nΠΠΎΠΏΡΡΠΊΠ° ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡ '35/13/1971'.\nΠ Π΅Π·ΡΠ»ΡΡΠ°Ρ : " . datefmt_parse($fmt, '35/13/1971');
if (intl_get_error_code() != 0) {
echo "\nΠ‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ : ".intl_get_error_message();
echo "\nΠΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ : ".intl_get_error_code();
}
?>ΠΡΠΈΠΌΠ΅Ρ #2 ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΡΠΈΠ»Π΅
<?php
$fmt = new IntlDateFormatter(
'en_US',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'America/Los_Angeles',
IntlDateFormatter::GREGORIAN,
'dd/MM/yyyy'
);
echo 'ΠΡΠ³ΠΊΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ : ';
if ($fmt->isLenient()) {
echo 'ΠΠ';
} else {
echo 'ΠΠΠ’';
}
$fmt->parse('35/13/1971');
echo "\nΠΠΎΠΏΡΡΠΊΠ° ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡ '35/13/1971'.\nΠ Π΅Π·ΡΠ»ΡΡΠ°Ρ : " . $fmt->parse('35/13/1971');
if (intl_get_error_code() != 0) {
echo "\nΠ‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ : " . intl_get_error_message();
echo "\nΠΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ : " . intl_get_error_code();
}
$fmt->setLenient(FALSE);
echo "\nΠ’Π΅ΠΏΠ΅ΡΡ ΠΌΡΠ³ΠΊΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ : ";
if ($fmt->isLenient()) {
echo 'ΠΠ';
} else {
echo 'ΠΠΠ’';
}
$fmt->parse('35/13/1971');
echo "\nΠΠΎΠΏΡΡΠΊΠ° ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡ '35/13/1971'.\nΠ Π΅Π·ΡΠ»ΡΡΠ°Ρ : " . $fmt->parse('35/13/1971');
if (intl_get_error_code() != 0) {
echo "\nΠ‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ : " . intl_get_error_message();
echo "\nΠΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ : " . intl_get_error_code();
}
?>Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
ΠΡΠ³ΠΊΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ : ΠΠ ΠΠΎΠΏΡΡΠΊΠ° ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡ '35/13/1971'. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ : 66038400 Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡΠ³ΠΊΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ : ΠΠΠ’ ΠΠΎΠΏΡΡΠΊΠ° ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡ '35/13/1971'. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ : Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ : Date parsing failed: U_PARSE_ERROR ΠΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ : 9