-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathdate.php
More file actions
108 lines (93 loc) · 2.55 KB
/
date.php
File metadata and controls
108 lines (93 loc) · 2.55 KB
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?php
class Date {
private $year;
private $month;
private $day;
/**
* Parse a date string
*
* Creates a new Date object by parsing the string. It currently only
* understands the YYYY-MM-DD format, and does no error checking. I
* should fix that.
*
* @param string $str The date
* @return Date
*/
public static function parse($str) {
if (($str === null) || ($str == '')) {
return null;
}
$ary = explode('-', $str);
$year = (integer) $ary[0];
$month = (integer) $ary[1];
$day = (integer) $ary[2];
return new Date($year, $month, $day);
}
/**
* Date constructor
*
* @param integer $year The year
* @param integer $month The month
* @param integer $day The day of the month
* @return Date
*/
function __construct($year, $month, $day) {
$this->year = (integer) $year;
$this->month = (integer) $month;
$this->day = (integer) $day;
}
/**
* Return the year
*
* @return integer
*/
public function year() {
return $this->year;
}
/**
* Return the month
*
* @return integer
*/
public function month() {
return $this->month;
}
/**
* Return the day of the month
*
* @return integer
*/
public function day() {
return $this->day;
}
/**
* Stringify the date (YYYY-MM-DD)
*
* @return string
*/
public function to_s() {
$format = "%04d-%02d-%02d";
return sprintf($format, $this->year, $this->month, $this->day);
}
/**
* Calculate an age based on this date
*
* Returns the number of whole years that have passed between this
* Date and now.
*
* @return integer
*/
public function age() {
$years = ((integer) date('Y')) - $this->year;
if (((integer) date('n')) < $this->month) {
$years -= 1;
}
else if (((integer) date('n')) == $this->month) {
if (((integer) date('j')) < $this->day) {
$years -= 1;
}
}
return $years;
}
}
?>