date_parse

(PHP 5 >= 5.2.0)

date_parse Возвращает ассоциативный массив с подробной информацией о заданной дате

Описание

array date_parse ( string $date )

Список параметров

date

Дата в формате, распознаваемом функцией strtotime().

Возвращаемые значения

Возвращает массив (array), содержащий информацию о дате в случае успеха или FALSE в случае возникновения ошибки.

Ошибки

В случае ошибок форматирования даты, элемент массива 'errors' будет содержать сообщения об этих ошибках.

Примеры

Пример #1 Пример использования date_parse()

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

Результат выполнения данного примера:

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] => 
)

Смотрите также

  • checkdate() - Проверяет корректность даты по григорианскому календарю
  • getdate() - Возвращает информацию о дате/времени

Коментарии

Careful - date_parse is perfectly happy with something like this:

 date_parse("2006-2-31");
2007-09-29 19:52:42
http://php5.kiev.ua/manual/ru/function.date-parse.html
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.
2009-08-14 14:02:30
http://php5.kiev.ua/manual/ru/function.date-parse.html
<?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($year02);
       
$ny substr($year22);

       
$y substr($id02);
       
$m substr($id22);
       
$d substr($id42);

        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 )
2009-11-23 04:43:27
http://php5.kiev.ua/manual/ru/function.date-parse.html
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)
}*/
?>
2010-09-22 11:18:21
http://php5.kiev.ua/manual/ru/function.date-parse.html
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_dumpdate_parse('B') );
var_dumpdate_parse('X') );
?>

Don't forget to further validate date_parse()'s output even when it isn't FALSE and the 'errors' key is empty.
2011-02-15 05:59:24
http://php5.kiev.ua/manual/ru/function.date-parse.html
See checkdate() at function.checkdate for Gregorian date validation.
2011-03-02 08:56:25
http://php5.kiev.ua/manual/ru/function.date-parse.html
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"
?>
2012-07-03 20:24:19
http://php5.kiev.ua/manual/ru/function.date-parse.html
Here is a workaround for the "Feb 2010" problem. It also handles "2014".

http://stackoverflow.com/questions/27052374/php-date-parsefeb-2010-gives-day-1/27068409
2014-11-21 21:04:52
http://php5.kiev.ua/manual/ru/function.date-parse.html
It's sometimes useful to be able to store incomplete dates, for example when all you know of someone's birthdate is the year or the month and day.

date_parse() handles (and MySQL accepts) dates containing zero-value elements such as "2017-00-00" and "0000-03-29", leaving it up to the parent application to determine when to require and how to handle missing date elements. date_parse() correctly reports zero values for zero-value date elements, reports an 'invalid date' warning, and does not report an error.

Example 1: Year only
<?php print_rdate_parse'2017-00-00' ) );?>
generates:
<?php
Array
(
    [
year] => 2017
   
[month] => 0
   
[day] => 0
   
[hour] =>
    [
minute] =>
    [
second] =>
    [
fraction] =>
    [
warning_count] => 1
   
[warnings] => Array
        (
            [
11] => The parsed date was invalid
       
)

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

    [
is_localtime] =>
)
?>

Example 2: Month and day only
<?php print_rdate_parse'0000-03-29' ) )?>
generates:
<?php
Array
(
    [
year] => 0
   
[month] => 3
   
[day] => 29
   
[hour] =>
    [
minute] =>
    [
second] =>
    [
fraction] =>
    [
warning_count] => 1
   
[warnings] => Array
        (
            [
11] => The parsed date was invalid
       
)

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

    [
is_localtime] =>
)
?>

However, simply omitting date elements gives PHP too much discretion in second-guessing our intentions:

Example 3: Truncated date:
<?php print_rdate_parse'2017-03' ) )?>
generates:
<?php
Array
(
    [
year] => 2017
   
[month] => 3
   
[day] => 1
   
[hour] =>
    [
minute] =>
    [
second] =>
    [
fraction] =>
    [
warning_count] => 0
   
[warnings] => Array
        (
        )

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

    [
is_localtime] =>
)
?>
In this case, PHP supplies a day value of 1 and does not report a warning.

Similarly, this feature of accepting zero date elements does not carry over to timestamps:

<?php $dDate strtotime'2017-03-00' );
print_rgetdate$dDate ) ); ?>

displays:

<?php Array
(
    [
seconds] => 0
   
[minutes] => 0
   
[hours] => 0
   
[mday] => 28
   
[wday] => 2
   
[mon] => 2
   
[year] => 2017
   
[yday] => 58
   
[weekday] => Tuesday
   
[month] => February
   
[0] => 1488268800
)
?>
In this case, PHP interprets the "zeroth" day of March to be the last day of February.
2017-03-30 23:48:13
http://php5.kiev.ua/manual/ru/function.date-parse.html
Passing "YYYY-MM" results in a valid date. Be careful to validate that your submitted date passed YOUR requirements.
2018-11-05 18:21:42
http://php5.kiev.ua/manual/ru/function.date-parse.html
Developers, be aware that using "now" will return an empty array, ex :

<?php
date_parse
("now");
?>

Will return :

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

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

    [is_localtime] => 
)
2019-12-06 12:23:30
http://php5.kiev.ua/manual/ru/function.date-parse.html

    Поддержать сайт на родительском проекте КГБ