3 # Copyright (C) 2007 Jason Woofenden
5 # This file is part of wfpl.
7 # wfpl is free software; you can redistribute it and/or modify it under the
8 # terms of the GNU Lesser General Public License as published by the Free
9 # Software Foundation; either version 2.1 of the License, or (at your option)
12 # wfpl is distributed in the hope that it will be useful, but WITHOUT ANY
13 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
17 # You should have received a copy of the GNU Lesser General Public License
18 # along with wfpl; if not, write to the Free Software Foundation, Inc., 51
19 # Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22 # This file contains functions to manipulate/calculate dates/times
24 function ymd_to_days($year, $month, $day) {
25 return (int)(mktime(12,0,0,$month,$day, $year, 0) / 86400);
28 function days_to_ymd($days) {
29 return explode('-', date('Y-n-j', $days * 86400 + 43200));
32 function days_to_weekday_name($days) {
33 $day_names = array('Thursday', 'Friday', 'Saturday', 'Sunday', 'Monday', 'Tuesday', 'Wednesday');
34 return $day_names[$days % 7];
38 #function time_test() {
39 # for($i = 0; $i < 41 * 86400; $i += 86399) {
41 # $days = (int)($i / 86400);
42 # list($year, $month, $day) = days_to_ymd($days);
43 # echo ", days_to_ymd($days): $year-$month-$day";
44 # $days = ymd_to_days($year, $month, $day);
45 # echo ", ymd_to_days($year, $month, $day): $days\n<br>";
50 # pass anything, and get a valid date
52 # returns array($year, $month, $day)
53 function clean_ymd($year, $month, $day) {
54 $year = intval($year, 10);
55 $month = intval($month, 10);
56 $day = intval($day, 10);
63 } elseif($month > 12) {
69 # FIXME this should check the month
73 return array($year, $month, $day);
76 # convert date string from mm/dd/yyyy to yyy-mm-dd
77 function mdy_to_ymd($date) {
78 $date = ereg_replace('[^0-9/-]', '', $date);
79 $date = ereg_replace('-', '/', $date);
80 $parts = explode('/', $date);
81 switch(count($parts)) {
84 if(strlen($year) == 0) {
85 list($month, $day, $year) = explode('/', date('m/d/Y'));
87 list($month, $day) = explode('/', date('m/d'));
91 list($month, $year) = $parts;
95 list($month, $day, $year) = $parts;
98 list($year, $month, $day) = clean_ymd($year, $month, $day);
100 return sprintf('%04u-%02u-%02u', $year, $month, $day);
103 # convert date string from yyy-mm-dd to mm/dd/yyyy
104 function ymd_to_mdy($date) {
105 $date = ereg_replace('[^0-9/-]', '', $date);
106 $date = ereg_replace('/', '-', $date);
107 $parts = explode('-', $date);
108 switch(count($parts)) {
111 if(strlen($year) == 0) {
112 list($year, $month, $day) = explode('-', date('Y-m-d'));
114 list($month, $day) = explode('-', date('m-d'));
118 list($year, $month) = $parts;
122 list($year, $month, $day) = $parts;
125 list($year, $month, $day) = clean_ymd($year, $month, $day);
127 return sprintf('%02u/%02u/%04u', $month, $day, $year);
130 function enc_mdy($date) {
131 return ymd_to_mdy($date);