X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=time.php;h=3c42f79dbde7d354e02f4f1c903b3102e6bbedc2;hb=653f560504621b6e0fc6d59ec1ba3d9bc7258f43;hp=501d89cf1138475466e17d1cc1692a4bd33e9104;hpb=4d68e21b12d8887935855ac9fe3117b0ee656c6f;p=wfpl.git
diff --git a/time.php b/time.php
index 501d89c..3c42f79 100644
--- a/time.php
+++ b/time.php
@@ -2,25 +2,23 @@
# Copyright (C) 2007 Jason Woofenden
#
-# This file is part of wfpl.
-#
-# wfpl is free software; you can redistribute it and/or modify it under the
-# terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; either version 2.1 of the License, or (at your option)
-# any later version.
-#
-# wfpl is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
-# more details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with wfpl; if not, write to the Free Software Foundation, Inc., 51
-# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
# This file contains functions to manipulate/calculate dates/times
+# FIXME make it so you can call this with a string YYYY-MM-DD
function ymd_to_days($year, $month, $day) {
return (int)(mktime(12,0,0,$month,$day, $year, 0) / 86400);
}
@@ -45,3 +43,96 @@ function days_to_weekday_name($days) {
# echo ", ymd_to_days($year, $month, $day): $days\n
";
# }
#}
+
+
+# pass anything, and get a valid date
+#
+# returns array($year, $month, $day)
+function clean_ymd($year, $month, $day) {
+ $year = intval($year, 10);
+ $month = intval($month, 10);
+ $day = intval($day, 10);
+
+ if($year < 100) {
+ $year += 2000;
+ }
+ if($month < 1) {
+ $month = 1;
+ } elseif($month > 12) {
+ $month = 12;
+ }
+ if($day < 1) {
+ $day = 1;
+ } else {
+ $max = date('t', mktime(12, 0, 0, $month, 1, $year));
+ if($day > $max) {
+ $day = $max;
+ }
+ }
+
+ return array($year, $month, $day);
+}
+
+# pass date like 3/21/99
+# returns array(year, month, day)
+function mdy_clean($date) {
+ $date = ereg_replace('[^0-9/-]', '', $date);
+ $date = ereg_replace('-', '/', $date);
+ $parts = explode('/', $date);
+ switch(count($parts)) {
+ case 1:
+ $year = $parts[0];
+ if(strlen($year) == 0) {
+ list($month, $day, $year) = explode('/', date('m/d/Y'));
+ } else {
+ list($month, $day) = explode('/', date('m/d'));
+ }
+ break;
+ case 2:
+ list($month, $year) = $parts;
+ $year = date('d');
+ break;
+ default:
+ list($month, $day, $year) = $parts;
+ }
+
+ return clean_ymd($year, $month, $day);
+}
+
+# convert date string from mm/dd/yyyy to yyyy-mm-dd
+function mdy_to_ymd($date) {
+ list($year, $month, $day) = mdy_clean($date);
+ return sprintf('%04u-%02u-%02u', $year, $month, $day);
+}
+
+# pass date like 2008-11-21
+# returns array(year, month, day)
+function ymd_clean($date) {
+ $date = ereg_replace('[^0-9/-]', '', $date);
+ $date = ereg_replace('/', '-', $date);
+ $parts = explode('-', $date);
+ switch(count($parts)) {
+ case 1:
+ $year = $parts[0];
+ if(strlen($year) == 0 || $year < 1971 || $year > 2050) {
+ list($year, $month, $day) = explode('-', date('Y-m-d'));
+ } else {
+ list($month, $day) = explode('-', date('m-d'));
+ }
+ break;
+ case 2:
+ list($year, $month) = $parts;
+ $year = date('d');
+ break;
+ default:
+ list($year, $month, $day) = $parts;
+ }
+
+ return clean_ymd($year, $month, $day);
+}
+
+# convert date string from yyyy-mm-dd to mm/dd/yyyy
+function ymd_to_mdy($str) {
+ list($year, $month, $day) = ymd_clean($str);
+ return sprintf('%02u/%02u/%04u', $month, $day, $year);
+}