0
ADOdb Date Library, part of the ADOdb abstraction library
0
-Download: http://php
.weblogs.com/adodb_date_time_library0
+Download: http://php
lens.com/phpeverywhere/0
PHP native date functions use integer timestamps for computations.
0
Because of this, dates are restricted to the years 1901-2038 on Unix
0
@@ -241,10 +241,12 @@ b. Implement daylight savings, which looks awfully complicated, see
0
+In adodb_date2(), $is_gmt not supported properly. Fixed.
0
-- In PHP 4.3.11, the 'r' format has changed. Leading 0 in day is added. Changed for compat.
0
-- Added support for negative months in adodb_mktime().
0
+In PHP 4.3.11, the 'r' format has changed. Leading 0 in day is added. Changed for compat.
0
+Added support for negative months in adodb_mktime().
0
Added limited strftime/gmstrftime support. x10 improvement in performance of adodb_date().
0
@@ -359,7 +361,7 @@ First implementation.
0
-define('ADODB_DATE_VERSION',0.2
1);
0
+define('ADODB_DATE_VERSION',0.2
2);
0
This code was originally for windows. But apparently this problem happens
0
@@ -689,12 +691,34 @@ adodb_date_gentable();
0
for ($i=1970; $i > 1500; $i--) {
0
adodb_date_test_date($i,1,1);
0
+$_month_table_normal = array("",31,28,31,30,31,30,31,31,30,31,30,31);
0
+$_month_table_leaf = array("",31,29,31,30,31,30,31,31,30,31,30,31);
0
+function adodb_validdate($y,$m,$d)
0
+global $_month_table_normal,$_month_table_leaf;
0
+ if (_adodb_is_leap_year($y)) $marr =& $_month_table_leaf;
0
+ else $marr =& $_month_table_normal;
0
+ if ($m > 12 || $m < 1) return false;
0
+ if ($d > 31 || $d < 1) return false;
0
+ if ($marr[$m] < $d) return false;
0
+ if ($y < 1000 && $y > 3000) return false;
0
Low-level function that returns the getdate() array. We have a special
0
$fast flag, which if set to true, will return fewer array values,
0
@@ -703,6 +727,7 @@ echo "<hr>$i ";
0
function _adodb_getdate($origd=false,$fast=false,$is_gmt=false)
0
+global $_month_table_normal,$_month_table_leaf;
0
$d = $origd - ($is_gmt ? 0 : adodb_get_gmt_diff());
0
@@ -912,8 +937,8 @@ function adodb_date2($fmt, $d=false, $is_gmt=false)
0
if ($rr[1] <= 100 && $rr[2]<= 1) return adodb_date($fmt,false,$is_gmt);
0
- if (!isset($rr[5])) $d = adodb_mktime(0,0,0,$rr[2],$rr[3],$rr[1]);
0
- else $d = @adodb_mktime($rr[5],$rr[6],$rr[7],$rr[2],$rr[3],$rr[1]);
0
+ if (!isset($rr[5])) $d = adodb_mktime(0,0,0,$rr[2],$rr[3],$rr[1],false,$is_gmt);
0
+ else $d = @adodb_mktime($rr[5],$rr[6],$rr[7],$rr[2],$rr[3],$rr[1],false,$is_gmt);
0
return adodb_date($fmt,$d,$is_gmt);
0
@@ -1262,11 +1287,11 @@ global $ADODB_DATE_LOCALE;
0
case 'S': $fmtdate .= 's'; break;
0
case 't': $fmtdate .= "\t"; break;
0
case 'T': $fmtdate .= 'H:i:s'; break;
0
- case 'u': $fmtdate .= '?u'; $parseu = true; break; // wrong strftime=1-based, date=0-bas
de0
+ case 'u': $fmtdate .= '?u'; $parseu = true; break; // wrong strftime=1-based, date=0-bas
ed0
case 'U': $fmtdate .= '?U'; $parseU = true; break;// wrong strftime=1-based, date=0-based
0
case 'x': $fmtdate .= $ADODB_DATE_LOCALE[0]; break;
0
case 'X': $fmtdate .= $ADODB_DATE_LOCALE[1]; break;
0
- case 'w': $fmtdate .= '?w'; $parseu = true; break; // wrong strftime=1-based, date=0-bas
de0
+ case 'w': $fmtdate .= '?w'; $parseu = true; break; // wrong strftime=1-based, date=0-bas
ed0
case 'W': $fmtdate .= '?W'; $parseU = true; break;// wrong strftime=1-based, date=0-based
0
case 'y': $fmtdate .= 'y'; break;
0
case 'Y': $fmtdate .= 'Y'; break;