1: <?php
2:
3: /**
4: * Jyxo PHP Library
5: *
6: * LICENSE
7: *
8: * This source file is subject to the new BSD license that is bundled
9: * with this package in the file license.txt.
10: * It is also available through the world-wide-web at this URL:
11: * https://github.com/jyxo/php/blob/master/license.txt
12: */
13:
14: namespace Jyxo\Input\Validator;
15:
16: /**
17: * Validator checking if the input value is valid date and time in YYYY-MM-DD HH::MM::SS format.
18: *
19: * @category Jyxo
20: * @package Jyxo\Input
21: * @subpackage Validator
22: * @copyright Copyright (c) 2005-2011 Jyxo, s.r.o.
23: * @license https://github.com/jyxo/php/blob/master/license.txt
24: * @author Jan Pěček
25: */
26: class IsDateTime extends \Jyxo\Input\Validator\AbstractValidator
27: {
28: /**
29: * Validates a value.
30: *
31: * @param mixed $value Input value
32: * @return boolean
33: */
34: public function isValid($value)
35: {
36: // Format check
37: if (!preg_match('~^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$~', (string) $value, $matches)) {
38: return false;
39: }
40:
41: list(, $year, $month, $day, $hour, $minute, $second) = $matches;
42:
43: // Date validity check
44: if (!checkdate($month, $day, $year)) {
45: return false;
46: }
47:
48: // Time validity check
49: if ($hour < 0 || $hour > 23) {
50: return false;
51: }
52: if ($minute < 0 || $minute > 59) {
53: return false;
54: }
55: if ($second < 0 || $second > 59) {
56: return false;
57: }
58:
59: return true;
60: }
61: }
62: