aboutsummaryrefslogtreecommitdiffstats
path: root/functions/date_functions.php
blob: 8127b4bbaa5b4a38f4844f83d309a63ac11ec197 (plain) (blame)
1
<?php
// date_functions.php
// functions for returning or comparing dates


// takes Apple's 2 character day format and makes it into 3 characters
function two2threeCharDays($day) {
	if ($day == "SU") $day_longer = "sun";
	elseif ($day == "MO") $day_longer = "mon";
	elseif ($day == "TU") $day_longer = "tue";
	elseif ($day == "WE") $day_longer = "wed";
	elseif ($day == "TH") $day_longer = "thu";
	elseif ($day == "FR") $day_longer = "fri";
	elseif ($day == "SA") $day_longer = "sat";
	return $day_longer;
}

// dateOfWeek() takes a date in Ymd and a day of week as iCal knows them 
// (ie: SU, MO, TU, etc)and returns the date of that day. 
// This function may be specific to WEEKLY recurring events.
function dateOfWeek($Ymd, $day) {
	global $week_start_day;
	if (!$week_start_day) $week_start_day = "Sunday";
	$timestamp = strtotime($Ymd);
	$sunday = strtotime((date("w",$timestamp)==0 ? "$week_start_day" : "last $week_start_day"), $timestamp);
	$day_longer = two2threeCharDays($day);
	return date("Ymd",strtotime($day_longer,$sunday));
}

// function to compare to dates in Ymd and return the number of weeks 
// that differ between them. requires dateOfWeek()
function weekCompare($now, $then) {
	global $week_start_day;
	$day = substr($week_start_day, 0, 2);
	$sun_now = dateOfWeek($now, $day);
	$sun_then = dateOfWeek($then, $day);
	$seconds_now = strtotime($sun_now);
	$seconds_then =  strtotime($sun_then);
	$diff_seconds = $seconds_now - $seconds_then;
	$diff_minutes = $diff_seconds/60;
	$diff_hours = $diff_minutes/60;
	$diff_days = round($diff_hours/24);
	$diff_weeks = $diff_days/7;
	
	return $diff_weeks;
}

// function to compare to dates in Ymd and return the number of days 
// that differ between them. requires dateOfWeek()
function dayCompare($now, $then) {
	$seconds_now = strtotime($now);
	$seconds_then =  strtotime($then);
	$diff_seconds = $seconds_now - $seconds_then;
	$diff_minutes = $diff_seconds/60;
	$diff_hours = $diff_minutes/60;
	$diff_days = round($diff_hours/24);
	
	return $diff_days;
}

// function to compare to dates in Ymd and return the number of months 
// that differ between them. requires dateOfWeek()
function monthCompare($now, $then) {
	ereg ("([0-9]{4})([0-9]{2})([0-9]{2})", $now, $date_now);
	ereg ("([0-9]{4})([0-9]{2})([0-9]{2})", $then, $date_then);
	$diff_years = $date_now[1] - $date_then[1];
	$diff_months = $date_now[2] - $date_then[2];
	if ($date_now[2] < $date_then[2]) {
		$diff_years -= 1;
		$diff_months = ($diff_months + 12) % 12;
	}
	$diff_months = ($diff_years * 12) + $diff_months;

	return $diff_months;
}


?>

© 2014-2024 Faster IT GmbH | imprint | privacy policy