note 95839 deleted from function.checkdate by thiago
| From: | thiago@php.net | Date: | Mon, 25 Jan 2010 12:49:37 +0000 |
| Subject: | note 95839 deleted from function.checkdate by thiago | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-165273@lists.php.net to get a copy of this message | ||
Note Submitter: Krauti(at) polizisten-duzer (dot)de
----
<?php
// my current timezone is CET
var_dump(Check::date('1.12.2010')); // int(1291161600)
var_dump(Check::date('2010-12-1')); // int(1291161600)
var_dump(Check::date('20101201')); // int(1291161600)
var_dump(Check::date('12/01/2010'));// int(1291161600)
var_dump(Check::date('29.2.2009')); // bool(false)
var_dump(Check::date('2009-2-29')); // bool(false)
var_dump(Check::date('20100229')); // bool(false)
var_dump(Check::date('2/29/2009')); // bool(false)
class Check {
public static function date($date) {
// jjjj-m-d
$r1='/^(20[012][0-9])-([0-9]|0[0-9]|1[012])-([0-9]|'. '[012][0-9]|3[01])$/S';
// jjjjmmdd / jjjj-mm-dd
$r2='/^(20[012][0-9])(-|)(0[0-9]|1[012])(-|)([012]'. '[0-9]|3[01])$/S';
// d.m.jjjj
$r3='/^([0-9]|[012][0-9]|3[013])\.([0-9]|[012][0-9]'.
'|3[01])\.(20[012][0-9])$/S';
// m/d/jjjj
$r4='/^([0-9]|[012][0-9]|3[01])\/([0-9]|[012][0-9]|'.
'3[013])\/(20[012][0-9])$/S';
// remove the '. '
if(preg_match($r1,$date,$e) && checkdate($e[2],$e[3],$e[1]))
return mktime(0,0,0,$e[2],$e[3],$e[1]);
if(preg_match($r2,$date,$e) && checkdate($e[3],$e[5],$e[1]))
return mktime(0,0,0,$e[3],$e[5],$e[1]);
if(preg_match($r3,$date,$e) && checkdate($e[2],$e[1],$e[3]))
return mktime(0,0,0,$e[2],$e[1],$e[3]);
if(preg_match($r4,$date,$e) && checkdate($e[1],$e[2],$e[3]))
return mktime(0,0,0,$e[1],$e[2],$e[3]);
return false;
}
public static function time($time) {
// h:i
$r1='/^([0-9]|[01][0-9]|2[0-3]):([0-9]|'. '[0-5][0-9])$/S';
// hh:ii / hhii
$r2='/^([01][0-9]|2[0-3])(:|)([0-5][0-9]'. ')$/S';
// h:i:s
$r3='/^([0-9]|[01][0-9]|2[0-3]):([0-9]|[0-5]'. '[0-9]):([0-9]|[0-5][0-9])$/S';
// hh:ii:ss / hhiiss
$r4='/^([01][0-9]|2[0-3])(:|)([0-5][0-9])(:|)'. '([0-5][0-9])$/S';
// remove the '. '
if(preg_match($r1,$time,$e)) return ((int)$e[1]*3600) + ((int)$e[2]*60);
if(preg_match($r2,$time,$e)) return ((int)$e[1]*3600) + ((int)$e[3]*60);
if(preg_match($r3,$time,$e)) return ((int)$e[1]*3600) + ((int)$e[2]*60)+(int)$e[3];
if(preg_match($r4,$time,$e)) return ((int)$e[1]*3600) + ((int)$e[3]*60)+(int)$e[5];
return false;
}
}
?>