class_mcDate.inc.php 1.89 KB
<?php
class mcDate {
	/**
	 * check if the format is like this yyyy-mm-dd
	 */
	public static function check8601Date($param_date) {
		$datumfalsch = 0;
		$pruefjahr = substr($param_date, 0, 4);
		$pruefstrich1 = substr($param_date, 4, 1);
		$pruefmonat = substr($param_date, 5, 2);
		$pruefstrich2 = substr($param_date, 7, 1);
		$prueftag = substr($param_date, 8, 2);
		
		if (!eregi("^[0-9]+$", $pruefjahr))
			$datumfalsch = 1;
		if ($pruefstrich1 != "-")
			$datumfalsch = 1;;
		if ($pruefstrich2 != "-")
			$datumfalsch = 1;;
		if ($pruefmonat < 01 || $pruefmonat > 12)
			$datumfalsch = 1;
		if ($prueftag < 01)
			$datumfalsch = 1;

		if ($datumfalsch == 0 && !checkdate($pruefmonat, $prueftag, $pruefjahr)) {
			$datumfalsch = 1;
		}

		if($datumfalsch==1) {
			 return false;
		} else {
			return true;
		}
	}
	/**
	 * wants http://en.wikipedia.org/wiki/ISO_8601 format for a date
	 */
	public static function format8601Date($param_date) {
		if($param_date == '0000-00-00') {
			return '';
		} else {
			$pruefjahr = substr($param_date, 0, 4);
			$pruefmonat = substr($param_date, 5, 2);
			$prueftag = substr($param_date, 8, 2);
			return $prueftag.'.'.$pruefmonat.'.'.$pruefjahr;
		}
	}

	public static function checkIfFirstIsBefore($param_DateBefore, $param_DateAfter) {
		if(mcDate::check8601Date($param_DateBefore) && mcDate::check8601Date($param_DateAfter)) {
			$DateBefore_jahr = substr($param_DateBefore, 0, 4);
			$DateBefore_monat = substr($param_DateBefore, 5, 2);
			$DateBefore_tag = substr($param_DateBefore, 8, 2);
			
			$DateAfter_jahr = substr($param_DateAfter, 0, 4);
			$DateAfter_monat = substr($param_DateAfter, 5, 2);
			$DateAfter_tag = substr($param_DateAfter, 8, 2);


			if($DateBefore_jahr <= $DateAfter_jahr
					&& $DateBefore_monat <= $DateAfter_monat
					&& $DateBefore_tag <= $DateAfter_tag) {
				return true;
			} else {
				return false;
			}

		} else {
			return false;
		}

	}
}
?>