date_parse

(PHP 5 >= 5.2.0)

date_parseRetourne un tableau associatif avec des informations détaillées sur une date donnée

Description

array date_parse ( string $date )

Liste de paramètres

date

Date dans un format accepté par la fonction strtotime().

Valeurs de retour

Retourne un tableau contenant des informations sur la date analysée en cas de succès ou FALSE si une erreur survient.

Erreurs / Exceptions

Dans le cas où la fonction retourne une erreur, l'élément "errors" contiendra les messages d'erreur.

Exemples

Exemple #1 Exemple avec date_parse()

<?php
print_r
(date_parse("2006-12-12 10:00:00.5"));
?>

L'exemple ci-dessus va afficher :

Array
(
    [year] => 2006
    [month] => 12
    [day] => 12
    [hour] => 10
    [minute] => 0
    [second] => 0
    [fraction] => 0.5
    [warning_count] => 0
    [warnings] => Array()
    [error_count] => 0
    [errors] => Array()
    [is_localtime] => 
)

Voir aussi

add a note add a note

User Contributed Notes 8 notes

up
3
admin at torntech dot com
4 years ago
A warning to others. Some keys will return with a default value where others will return as false if the date string has it omitted. Unsure if this is a bug or feature, but hopefully this will save someone some time.
<?php
///Example
$input = "Feb 2010";
$info = date_parse($input);
var_dump($info);

/*Returns:
array(12) {
    ["year"]=> int(2010)
    ["month"]=> int(2)
    ["day"]=> int(1)    //<---expected false like below
    ["hour"]=> bool(false)
    ["minute"]=> bool(false)
    ["second"]=> bool(false)
    ["fraction"]=> bool(false)
    ["warning_count"]=> int(0)
    ["warnings"]=> array(0) { }
    ["error_count"]=> int(0)
    ["errors"]=> array(0) { }
    ["is_localtime"]=> bool(false)
}*/
?>
up
2
alvaro at demogracia dot com
3 years ago
Be aware that date_parse() is happy with just a time zone and it can be pretty counter-intuitive. E.g.:

<?php
var_dump
( date_parse('Europe/Madrid') );
?>

... prints an array where year, month, day... are FALSE. But so do these:

<?php
var_dump
( date_parse('A') );
var_dump( date_parse('B') );
var_dump( date_parse('X') );
?>

Don't forget to further validate date_parse()'s output even when it isn't FALSE and the 'errors' key is empty.
up
1
ryan_a_martin at yahoo dot com
3 years ago
See checkdate() at http://php.net/manual/en/function.checkdate.php for Gregorian date validation.
up
0
adamm at extratech dot com
2 years ago
A warning to some
<?php
$time
= "00:14:38"
$parse_date = date_parse($time);
echo
var_dump($parse_date) ."<br>";
//here you will get what you expect

$time = "-00:14:38"
$parse_date = date_parse($time);
echo
var_dump($parse_date) ."<br>";
//here you will recieve hours minutes and seconds as booleans and as false and you will get error set to "Unexpected character"

$time = "00:-14:38"
$parse_date = date_parse($time);
echo
var_dump($parse_date) ."<br>";
//here you will recieve the same as the above

$time = "00:14:-38"
$parse_date = date_parse($time);
echo
var_dump($parse_date) ."<br>";
//here you will receive hours as 00 minutes as 14 and seconds as 0. The error will get set as the same as above. Meaning "Unexpected character"
?>
up
0
gpayne at galenaparkisd com
7 years ago
Careful - date_parse is perfectly happy with something like this:

date_parse("2006-2-31");
up
-2
eugene at ultimatecms dot co dot za
5 years ago
<?php

$ida
= '091122671325';
$idb = '091123671325';

// This function will match the identity number up to the day, but only for a maximum of 99years+364days.
// Will not work when checking persons older than 100years-1day.

function idtodate($id)
{
       
$year = date("Y");
       
$month = date("m");
       
$day = date("d");

       
$nc = substr($year, 0, 2);
       
$ny = substr($year, 2, 2);

       
$y = substr($id, 0, 2);
       
$m = substr($id, 2, 2);
       
$d = substr($id, 4, 2);

        if(
$y.$m.$d <= $ny.$month.$day-1) {
               
$newc = $nc;
        } else {
               
$newc = $nc-1;
        }

       
$new = $newc.$y;

        return array(
'year' => $new, 'month' => $m, 'day' => $d);
}

echo
'ID: '.$ida.'<br>';
print_r(idtodate($ida));

echo
'<br><br>';

echo
'ID: '.$idb.'<br>';
print_r(idtodate($idb));

?>

Output:
1. If the year-month-day is smaller than today (2009-11-23), but bigger than 1999: year => 2009
ID: 091122671325
Array ( [year] => 2009 [month] => 11 [day] => 22 )

2. If the year-month-day is the same as, or bigger than today, but smaller than 2000: year => 1909
ID: 091123671325
Array ( [year] => 1909 [month] => 11 [day] => 23 )
up
-2
alan at wilcoxengineering dot com
5 years ago
Caution: date_parse expects months 1..12 only.

date_parse("13/1/5769")  for  month=13, Ehul in Jewish calendar, results in  month==3 instead of month==13.

It does, however, report the error array showing "Unexpected Character."

It would be nice if date_parse could handle the months properly (just report back a "13" for the month). The older approach of substr() is my workaround.
To Top