<?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 )
date_parse
(PHP 5 >= 5.2.0)
date_parse — Retorna um array associativo com detalhes sobre uma dada data
Descrição
array date_parse
( string $date
)
Valor Retornado
Retorna um array com informação sobre a data analisada em sucesso, ou FALSE em falha.
Erros
No caso do formato da data conter erro, o elemento 'erros' conterá as mensagens de erro.
Exemplos
Exemplo #1 Um exemplo da date_parse()
<?php
print_r(date_parse("2006-12-12 10:00:00.5"));
?>
O exemplo acima irá imprimir:
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] =>
)
User Contributed Notes
date_parse
date_parse
eugene at ultimatecms dot co dot za
23-Nov-2009 08:43
23-Nov-2009 08:43
alan at wilcoxengineering dot com
14-Aug-2009 03:02
14-Aug-2009 03:02
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.
gpayne at galenaparkisd com
29-Sep-2007 08:52
29-Sep-2007 08:52
Careful - date_parse is perfectly happy with something like this:
date_parse("2006-2-31");

date_parse_from_format