Revision: 63797
Updated Code
at June 7, 2013 07:34 by vodou
Updated Code
/**
* Takes one or two TIMESTAMPs, and an optional formatting array of the form ($year, $month, $day),
* and returns a date that is appropriate to the situation
* @param int $start
* @param int $end
* @param array $fmt
* @return boolean|string
*/
function _pj_pretty_date( $start, $end = NULL, $fmt = NULL ) {
if( ! isset( $start ) ) {
return false;
}
if( ! isset( $fmt ) ) {
// default formatting
$fmt = array( 'Y', 'M', 'j' );
}
list( $yr, $mon, $day ) = $fmt;
if( ! isset( $end) || $start == $end ) {
return( date( "$mon $day, $yr", $start ) );
}
if( date( 'M-j-Y', $start ) == date( 'M-j-Y', $end ) ) {
// close enough
return date( "$mon $day, $yr", $start );
}
// ok, so $end != $start
// let's look at the YMD individually, and make a pretty string
$dates = array(
's_year' => date( $yr, $start ),
'e_year' => date( $yr, $end ),
's_month' => date( $mon, $start ),
'e_month' => date( $mon, $end ),
's_day' => date( $day, $start ),
'e_day' => date( $day, $end ),
);
// init dates
$start_date = '';
$end_date = '';
$start_date .= $dates['s_month'];
if( $dates['s_month'] != $dates['e_month'] ) {
$end_date .= $dates['e_month'];
}
$start_date .= ' '. $dates['s_day'];
if( $dates['s_day'] != $dates['e_day'] || $dates['s_month'] != $dates['e_month'] ) {
$end_date .= ' ' . $dates['e_day'];
}
if( $dates['s_year'] != $dates['e_year'] ) {
$start_date .= ', ' . $dates['s_year'];
if( $dates['s_month'] == $dates['e_month'] ) {
if( $dates['s_day'] == $dates['e_day'] ) {
// same day, same month, different year
$end_date = ' ' . $dates['e_day'] . $end_date;
}
// same month, but a different year
$end_date = $dates['e_month'] . $end_date;
}
}
$end_date .= ', ' . $dates['e_year'];
$complete_date = trim( $start_date ) . '–' . trim( $end_date );
return $complete_date;
}
Revision: 63796
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at June 7, 2013 07:19 by vodou
Initial Code
/**
* Takes two TIMESTAMPs and returns a date that is appropriate to the situation
* @param int $start
* @param int $end
* @return boolean|string
*/
function _pj_pretty_date( $start, $end = NULL ) {
if( ! isset( $start ) ) {
return false;
}
if( ! isset( $end) || $start == $end ) {
return( date( 'M jS, Y', $start ) );
}
if( date( 'M-j-Y', $start ) == date( 'M-j-Y', $end ) ) {
// close enough
return date( 'M jS, Y', $start );
}
// ok, so $end != $start
// let's look at the YMD individually, and make a pretty string
$dates = array(
's_year' => date( 'Y', $start ),
'e_year' => date( 'Y', $end ),
's_month' => date( 'M', $start ),
'e_month' => date( 'M', $end ),
's_day' => date( 'jS', $start ),
'e_day' => date( 'jS', $end ),
);
// init dates
$start_date = '';
$end_date = '';
$start_date .= $dates['s_month'];
if( $dates['s_month'] != $dates['e_month'] ) {
$end_date .= $dates['e_month'];
}
$start_date .= ' '. $dates['s_day'];
if( $dates['s_day'] != $dates['e_day'] || $dates['s_month'] != $dates['e_month'] ) {
$end_date .= ' ' . $dates['e_day'];
}
if( $dates['s_year'] != $dates['e_year'] ) {
$start_date .= ', ' . $dates['s_year'];
if( $dates['s_month'] == $dates['e_month'] ) {
if( $dates['s_day'] == $dates['e_day'] ) {
// same day, same month, different year
$end_date = ' ' . $dates['e_day'] . $end_date;
}
// same month, but a different year
$end_date = $dates['e_month'] . $end_date;
}
}
$end_date .= ', ' . $dates['e_year'];
$complete_date = trim( $start_date ) . '–' . trim( $end_date );
return $complete_date;
}
Initial URL
Initial Description
Takes one or two PHP timestamps, and returns a somewhat humanized string representing the date range * Jun 7th, 2013 * Jun 7th-11th, 2013 * Jun 7th-Jul 3rd, 2013 * Jun 7th, 2013-Jan 1st, 2013
Initial Title
PHP Date range formatter
Initial Tags
date
Initial Language
PHP