1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
<?php
function in_str($needle,$haystack) {
return strpos($haystack, $needle) !== false;
}
function age()
{
list($cyear, $cmonth, $cday) = explode(' ', strftime("%Y %m %d"));
switch (func_num_args()) {
case 1: $date = trim(array_shift(func_get_args()));
if (in_str('-', $date)) {
list($byear, $bmonth, $bday) = preg_split('/-| /',$date);
} elseif (in_str('.', $date)) {
list($bday, $bmonth, $byear) = explode('.', $date);
} elseif (in_str('/', $date)) {
list($bmonth, $bday, $byear) = explode('/', $date);
} else {
if (strlen($date) > 6) {
$byear = substr($date, 0, 4);
$bmonth = substr($date, 4, 2);
$bday = substr($date, 6, 2);
} else {
$byear = substr($date, 0, 2);
$bmonth = substr($date, 2, 2);
$bday = substr($date, 4, 2);
}
}
break;
case 3:
list($bday,$bmonth,$byear) = func_get_args();
if ($bday > 99) {
list($bday,$byear) = array($byear,$bday);
}
}
if ($byear < 100) {
$cent = substr($cyear, 0, 2);
if ($byear < strftime('%y')) {
$byear = $cent.$byear;
} else {
$byear = --$cent.$byear;
}
}
$age = $cyear - $byear;
if ($cmonth < $bmonth OR ($cmonth == $bmonth AND $cday < $bday)) {
$age -=1;
}
return $age;
}
?>
|