PHP 8.4.1 Released!

date_parse_from_format

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

date_parse_from_formatBelirtildiği gibi biçimlendirilmiş olarak tarih hakkında bilgi verir

Açıklama

date_parse_from_format(string $biçem, string $zaman): array

Belirtilen zamanla ilgili ayrıntılı bilgiyi ilişkisel bir dizi ile döndürür.

Bağımsız Değişkenler

biçem

biçem kullanımı hakkında bilgi DateTimeImmutable::createFromFormat() sayfasındadır. Aynı kurallar uygulanır.

zaman

Zamanı gösteren dizge.

Dönen Değerler

Belirtilen zaman hakkında ayrıntılı bilgiyi ilişkisel dizi ile döndürür.

Döndürülen dizi year (yıl), month (ay), day (gün), hour (saat), minute (dakika), second (saniye), fraction (saniyenin kesri), is_localtime (yerel zaman) alanlarını içerir.

is_localtime değeri mevcutsa zone_type anahtarındaki değer zaman diliminin türünü içerir. Zaman dilimi türü 1 (UTC) ise zone (bölge) ve is_dst (hedef mi) alanları, 2 (kısaltma) için tz_abbr (zaman dilimi kısaltması) ve is_dst (hedef mi) alanları ve 3 (zaman dilimi belirteci) için tz_abbr (zaman dilimi kısaltması) ve tz_id (zaman dilimi kimliği) alanları eklenir.

Dizi, warning_count (uyarı sayısı) ve warnings (uyarılar) alanlarını da içerir. İlki kaç uyarı olduğunu belirtir. warnings dizisinin anahtarları belirtilen zamanda uyarının oluştuğu konumu ve uyarıyı içeren dizgeyi belirtir. Aşağıdaki örneklerden biri böyle bir uyarıyı içermektedir.

Dizi ayrıca, error_count (hata sayısı) ve errors (hatalar) alanlarını da içerir. İlki kaç hata bulunduğunu belirtir. errors dizisinin anahtarları belirtilen zamanda hatanın oluştuğu konumu ve hatayı içeren dizgeyi belirtir. Aşağıdaki örneklerden biri böyle bir hatayı içermektedir.

Uyarı

warnings ve errors dizilerinin öğe sayısı bunlar aynı konumda oluşmuşsa warning_count veya error_count değerinden az olamaz.

Hatalar/İstisnalar

zaman değeri NULL (\0) baytını içeriyorsa ValueError istisnası oluşur.

Sürüm Bilgisi

Sürüm: Açıklama
8.0.21, 8.1.8, 8.2.0 zaman değeri NULL (\0) baytını içeriyorsa artık ValueError istisnası oluşuyor, evvelce sessizce yok sayılırdı.
7.2.0 Dönen dizinin zone öğesi artık dakika değil saniye cinsinden değer içeriyor ve imi ters oluyor. Örneğin, -120 yerine artık 7200 dönüyor.

Örnekler

Örnek 1 - date_parse_from_format() örneği

<?php
$date
= "6.1.2009 13:00+01:00";
print_r(date_parse_from_format("j.n.Y H:iP", $date));
?>

Yukarıdaki örneğin çıktısı:

Array
(
    [year] => 2009
    [month] => 1
    [day] => 6
    [hour] => 13
    [minute] => 0
    [second] => 0
    [fraction] =>
    [warning_count] => 0
    [warnings] => Array
        (
        )

    [error_count] => 0
    [errors] => Array
        (
        )

    [is_localtime] => 1
    [zone_type] => 1
    [zone] => 3600
    [is_dst] =>
)

Örnek 2 - Uyarılı date_parse_from_format() örneği

<?php
$date
= "26 August 2022 22:30 pm";
$parsed = date_parse_from_format("j F Y G:i a", $date);

echo
"Uyarı sayısı: ", $parsed['warning_count'], "\n";
foreach (
$parsed['warnings'] as $position => $message) {
echo
"\t{$position} konumunda: {$message}\n";
}
?>

Yukarıdaki örneğin çıktısı:

Uyarı sayısı: 1
	23 konumunda: The parsed time was invalid

Örnek 3 - Hatalı date_parse_from_format() örneği

<?php
$date
= "26 August 2022 CEST";
$parsed = date_parse_from_format("j F Y H:i", $date);

echo
"Hata sayısı: ", $parsed['error_count'], "\n";
foreach (
$parsed['errors'] as $position => $message) {
echo
"\t{$position} konumunda: {$message}\n";
}
?>

Yukarıdaki örneğin çıktısı:

Hata sayısı: 3
	15 konumunda: A two digit hour could not be found
	19 konumunda: Data missing

Ayrıca Bakınız

add a note

User Contributed Notes 1 note

up
0
jp dot amarok at email dot cz
1 month ago
It seems that the safest way to check for errors is not by checking the number of errors, but warnings instead. See the following example where "m" and "d" are swapped and thus not correct.

<?php
var_dump
( date_parse_from_format('m.d.Y', '18.10.2024') );

OUTPUT:
array(
12) {
[
"year"]=>
int(2024)
[
"month"]=>
int(18)
[
"day"]=>
int(10)
[
"hour"]=>
bool(false)
[
"minute"]=>
bool(false)
[
"second"]=>
bool(false)
[
"fraction"]=>
bool(false)
[
"warning_count"]=>
int(1)
[
"warnings"]=>
array(
1) {
[
10]=>
string(27) "The parsed date was invalid"
}
[
"error_count"]=>
int(0)
[
"errors"]=>
array(
0) {
}
[
"is_localtime"]=>
bool(false)
}
?>

The function simply assigns 18 to the "month" field without errors!! So simply use an if-condition and check "warning_count" to detect possible errors.
To Top