/** * test time validation when passing an array * * @return void */ public function testTimeArray() { $date = ['hour' => 13, 'minute' => 14, 'second' => 15]; $this->assertTrue(Validation::time($date)); $date = ['hour' => 1, 'minute' => 14, 'second' => 15, 'meridian' => 'am']; $this->assertTrue(Validation::time($date)); $date = ['hour' => 12, 'minute' => 14, 'second' => 15, 'meridian' => 'pm']; $this->assertTrue(Validation::time($date)); $date = ['hour' => 'farts', 'minute' => 'farts']; $this->assertFalse(Validation::time($date)); $date = []; $this->assertFalse(Validation::time($date)); }
/** * Validation of Time fields * * @param mixed $value * @param array $options * - timeFormat (defaults to 'hms') * - allowEmpty * - after/before (fieldName to validate against) * - min/max (defaults to >= 1 - at least 1 minute apart) * @param array $context * @return bool Success */ public function validateTime($value, $options = [], array $context = []) { if (!$value) { return false; } $dateTime = explode(' ', $value, 2); $value = array_pop($dateTime); if (Validation::time($value)) { // after/before? if (!empty($options['after']) && isset($context['data'][$options['after']])) { if ($context['data'][$options['after']] >= $value) { return false; } } if (!empty($options['before']) && isset($context['data'][$options['before']])) { if ($context['data'][$options['before']] <= $value) { return false; } } return true; } return false; }
/** * testTime method * * @return void */ public function testTime() { $this->assertTrue(Validation::time('00:00')); $this->assertTrue(Validation::time('23:59')); $this->assertFalse(Validation::time('24:00')); $this->assertTrue(Validation::time('12:00')); $this->assertTrue(Validation::time('12:01')); $this->assertTrue(Validation::time('12:01am')); $this->assertTrue(Validation::time('12:01pm')); $this->assertTrue(Validation::time('1pm')); $this->assertTrue(Validation::time('1 pm')); $this->assertTrue(Validation::time('1 PM')); $this->assertTrue(Validation::time('01:00')); $this->assertFalse(Validation::time('1:00')); $this->assertTrue(Validation::time('1:00pm')); $this->assertFalse(Validation::time('13:00pm')); $this->assertFalse(Validation::time('9:00')); }