/** * Returns a date in the format used by MS-DOS. * * @see http://www.vsft.com/hal/dostime.htm * @param util.Date date * @return int */ protected function dosDate(Date $date) { return (($date->getYear() - 1980 & 0x7f) << 4 | $date->getMonth() & 0xf) << 5 | $date->getDay() & 0x1f; }
/** * Formats a * * @param util.Date d * @return string */ public function format(Date $d) { $out = ''; foreach ($this->format as $token) { switch ($token) { case '%Y': $out .= $d->getYear(); break; case '%m': $out .= str_pad($d->getMonth(), 2, '0', STR_PAD_LEFT); break; case '%d': $out .= str_pad($d->getDay(), 2, '0', STR_PAD_LEFT); break; case '%H': $out .= str_pad($d->getHours(), 2, '0', STR_PAD_LEFT); break; case '%M': $out .= str_pad($d->getMinutes(), 2, '0', STR_PAD_LEFT); break; case '%S': $out .= str_pad($d->getSeconds(), 2, '0', STR_PAD_LEFT); break; case '%p': $h = $d->getHours(); $out .= $h >= 12 ? 'PM' : 'AM'; break; case '%I': $out .= str_pad($d->getHours() % 12, 2, '0', STR_PAD_LEFT); break; case '%z': $out .= $d->getTimeZone()->getName(); break; case '%Z': $out .= $d->getOffset(); break; case is_array($token): $out .= $token[1][call_user_func([$d, 'get' . $token[0]]) - 1]; break; default: $out .= $token; } } return $out; }