/** Return formatted date based on timestamp $d */ function adodb_date($fmt, $d = false, $is_gmt = false) { static $daylight; global $ADODB_DATETIME_CLASS; if ($d === false) { return $is_gmt ? @gmdate($fmt) : @date($fmt); } if (!defined('ADODB_TEST_DATES')) { if (abs($d) <= 0x7fffffff) { // check if number in 32-bit signed range if (!defined('ADODB_NO_NEGATIVE_TS') || $d >= 0) { // if windows, must be +ve integer return $is_gmt ? @gmdate($fmt, $d) : @date($fmt, $d); } } } $_day_power = 86400; $arr = _adodb_getdate($d, true, $is_gmt); if (!isset($daylight)) { $daylight = function_exists('adodb_daylight_sv'); } if ($daylight) { adodb_daylight_sv($arr, $is_gmt); } $year = $arr['year']; $month = $arr['mon']; $day = $arr['mday']; $hour = $arr['hours']; $min = $arr['minutes']; $secs = $arr['seconds']; $max = strlen($fmt); $dates = ''; $isphp5 = PHP_VERSION >= 5; /* at this point, we have the following integer vars to manipulate: $year, $month, $day, $hour, $min, $secs */ for ($i = 0; $i < $max; $i++) { switch ($fmt[$i]) { case 'T': if ($ADODB_DATETIME_CLASS) { $dt = new DateTime(); $dt->SetDate($year, $month, $day); $dates .= $dt->Format('T'); } else { $dates .= date('T'); } break; // YEAR // YEAR case 'L': $dates .= $arr['leap'] ? '1' : '0'; break; case 'r': // Thu, 21 Dec 2000 16:01:07 +0200 // 4.3.11 uses '04 Jun 2004' // 4.3.8 uses ' 4 Jun 2004' $dates .= gmdate('D', $_day_power * (3 + adodb_dow($year, $month, $day))) . ', ' . ($day < 10 ? '0' . $day : $day) . ' ' . date('M', mktime(0, 0, 0, $month, 2, 1971)) . ' ' . $year . ' '; if ($hour < 10) { $dates .= '0' . $hour; } else { $dates .= $hour; } if ($min < 10) { $dates .= ':0' . $min; } else { $dates .= ':' . $min; } if ($secs < 10) { $dates .= ':0' . $secs; } else { $dates .= ':' . $secs; } $gmt = adodb_get_gmt_diff($year, $month, $day); $dates .= ' ' . adodb_tz_offset($gmt, $isphp5); break; case 'Y': $dates .= $year; break; case 'y': $dates .= substr($year, strlen($year) - 2, 2); break; // MONTH // MONTH case 'm': if ($month < 10) { $dates .= '0' . $month; } else { $dates .= $month; } break; case 'Q': $dates .= $month + 3 >> 2; break; case 'n': $dates .= $month; break; case 'M': $dates .= date('M', mktime(0, 0, 0, $month, 2, 1971)); break; case 'F': $dates .= date('F', mktime(0, 0, 0, $month, 2, 1971)); break; // DAY // DAY case 't': $dates .= $arr['ndays']; break; case 'z': $dates .= $arr['yday']; break; case 'w': $dates .= adodb_dow($year, $month, $day); break; case 'l': $dates .= gmdate('l', $_day_power * (3 + adodb_dow($year, $month, $day))); break; case 'D': $dates .= gmdate('D', $_day_power * (3 + adodb_dow($year, $month, $day))); break; case 'j': $dates .= $day; break; case 'd': if ($day < 10) { $dates .= '0' . $day; } else { $dates .= $day; } break; case 'S': $d10 = $day % 10; if ($d10 == 1) { $dates .= 'st'; } else { if ($d10 == 2 && $day != 12) { $dates .= 'nd'; } else { if ($d10 == 3) { $dates .= 'rd'; } else { $dates .= 'th'; } } } break; // HOUR // HOUR case 'Z': $dates .= $is_gmt ? 0 : -adodb_get_gmt_diff($year, $month, $day); break; case 'O': $gmt = $is_gmt ? 0 : adodb_get_gmt_diff($year, $month, $day); $dates .= adodb_tz_offset($gmt, $isphp5); break; case 'H': if ($hour < 10) { $dates .= '0' . $hour; } else { $dates .= $hour; } break; case 'h': if ($hour > 12) { $hh = $hour - 12; } else { if ($hour == 0) { $hh = '12'; } else { $hh = $hour; } } if ($hh < 10) { $dates .= '0' . $hh; } else { $dates .= $hh; } break; case 'G': $dates .= $hour; break; case 'g': if ($hour > 12) { $hh = $hour - 12; } else { if ($hour == 0) { $hh = '12'; } else { $hh = $hour; } } $dates .= $hh; break; // MINUTES // MINUTES case 'i': if ($min < 10) { $dates .= '0' . $min; } else { $dates .= $min; } break; // SECONDS // SECONDS case 'U': $dates .= $d; break; case 's': if ($secs < 10) { $dates .= '0' . $secs; } else { $dates .= $secs; } break; // AM/PM // Note 00:00 to 11:59 is AM, while 12:00 to 23:59 is PM // AM/PM // Note 00:00 to 11:59 is AM, while 12:00 to 23:59 is PM case 'a': if ($hour >= 12) { $dates .= 'pm'; } else { $dates .= 'am'; } break; case 'A': if ($hour >= 12) { $dates .= 'PM'; } else { $dates .= 'AM'; } break; default: $dates .= $fmt[$i]; break; // ESCAPE // ESCAPE case "\\": $i++; if ($i < $max) { $dates .= $fmt[$i]; } break; } } return $dates; }
/** Return formatted date based on timestamp $d */ function adodb_date($fmt, $d = false, $is_gmt = false) { if ($d === false) { return date($fmt); } if (!defined('ADODB_TEST_DATES')) { if (abs($d) <= 0x7fffffff) { // check if number in 32-bit signed range if (!defined('ADODB_NO_NEGATIVE_TS') || $d >= 0) { // if windows, must be +ve integer return @date($fmt, $d); } } } $_day_power = 86400; $arr = _adodb_getdate($d, true, $is_gmt); $year = $arr['year']; $month = $arr['mon']; $day = $arr['mday']; $hour = $arr['hours']; $min = $arr['minutes']; $secs = $arr['seconds']; $max = strlen($fmt); $dates = ''; /* at this point, we have the following integer vars to manipulate: $year, $month, $day, $hour, $min, $secs */ for ($i = 0; $i < $max; $i++) { switch ($fmt[$i]) { case 'T': $dates .= date('T'); break; // YEAR // YEAR case 'L': $dates .= $arr['leap'] ? '1' : '0'; break; case 'r': // Thu, 21 Dec 2000 16:01:07 +0200 $dates .= gmdate('D', $_day_power * (3 + adodb_dow($year, $month, $day))) . ', ' . ($day < 10 ? ' ' . $day : $day) . ' ' . date('M', mktime(0, 0, 0, $month, 2, 1971)) . ' ' . $year . ' '; if ($hour < 10) { $dates .= '0' . $hour; } else { $dates .= $hour; } if ($min < 10) { $dates .= ':0' . $min; } else { $dates .= ':' . $min; } if ($secs < 10) { $dates .= ':0' . $secs; } else { $dates .= ':' . $secs; } $gmt = adodb_get_gmt_different(); $dates .= sprintf(' %s%04d', $gmt < 0 ? '+' : '-', abs($gmt) / 36); break; case 'Y': $dates .= $year; break; case 'y': $dates .= substr($year, strlen($year) - 2, 2); break; // MONTH // MONTH case 'm': if ($month < 10) { $dates .= '0' . $month; } else { $dates .= $month; } break; case 'n': $dates .= $month; break; case 'M': $dates .= date('M', mktime(0, 0, 0, $month, 2, 1971)); break; case 'F': $dates .= date('F', mktime(0, 0, 0, $month, 2, 1971)); break; // DAY // DAY case 't': $dates .= $arr['ndays']; break; case 'z': $dates .= $arr['yday']; break; case 'w': $dates .= adodb_dow($year, $month, $day); break; case 'l': $dates .= gmdate('l', $_day_power * (3 + adodb_dow($year, $month, $day))); break; case 'D': $dates .= gmdate('D', $_day_power * (3 + adodb_dow($year, $month, $day))); break; case 'j': $dates .= $day; break; case 'd': if ($day < 10) { $dates .= '0' . $day; } else { $dates .= $day; } break; case 'S': $d10 = $day % 10; if ($d10 == 1) { $dates .= 'st'; } else { if ($d10 == 2) { $dates .= 'nd'; } else { if ($d10 == 3) { $dates .= 'rd'; } else { $dates .= 'th'; } } } break; // HOUR // HOUR case 'Z': $dates .= $is_gmt ? 0 : -adodb_get_gmt_different(); break; case 'O': $gmt = $is_gmt ? 0 : adodb_get_gmt_different(); $dates .= sprintf('%s%04d', $gmt < 0 ? '+' : '-', abs($gmt) / 36); break; case 'H': if ($hour < 10) { $dates .= '0' . $hour; } else { $dates .= $hour; } break; case 'h': if ($hour > 12) { $hh = $hour - 12; } else { if ($hour == 0) { $hh = '12'; } else { $hh = $hour; } } if ($hh < 10) { $dates .= '0' . $hh; } else { $dates .= $hh; } break; case 'G': $dates .= $hour; break; case 'g': if ($hour > 12) { $hh = $hour - 12; } else { if ($hour == 0) { $hh = '12'; } else { $hh = $hour; } } $dates .= $hh; break; // MINUTES // MINUTES case 'i': if ($min < 10) { $dates .= '0' . $min; } else { $dates .= $min; } break; // SECONDS // SECONDS case 'U': $dates .= $d; break; case 's': if ($secs < 10) { $dates .= '0' . $secs; } else { $dates .= $secs; } break; // AM/PM // Note 00:00 to 11:59 is AM, while 12:00 to 23:59 is PM // AM/PM // Note 00:00 to 11:59 is AM, while 12:00 to 23:59 is PM case 'a': if ($hour >= 12) { $dates .= 'pm'; } else { $dates .= 'am'; } break; case 'A': if ($hour >= 12) { $dates .= 'PM'; } else { $dates .= 'AM'; } break; default: $dates .= $fmt[$i]; break; // ESCAPE // ESCAPE case "\\": $i++; if ($i < $max) { $dates .= $fmt[$i]; } break; } } return $dates; }