mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 12:05:37 +00:00
Better second handling
This commit is contained in:
parent
d2132e85db
commit
e97783b057
@ -182,6 +182,14 @@ class DatetimeField extends TextField
|
||||
$fromFormatter = $this->getFormatter();
|
||||
$toFormatter = $this->getISO8601Formatter();
|
||||
$timestamp = $fromFormatter->parse($datetime);
|
||||
|
||||
// Try to parse time without seconds, since that's a valid HTML5 submission format
|
||||
// See https://html.spec.whatwg.org/multipage/infrastructure.html#times
|
||||
if ($timestamp === false && $this->getHTML5()) {
|
||||
$fromFormatter->setPattern(str_replace(':ss', '', $fromFormatter->getPattern()));
|
||||
$timestamp = $fromFormatter->parse($datetime);
|
||||
}
|
||||
|
||||
if ($timestamp === false) {
|
||||
return null;
|
||||
}
|
||||
|
@ -389,7 +389,7 @@ class TimeField extends TextField
|
||||
// Try to parse time without seconds, since that's a valid HTML5 submission format
|
||||
// See https://html.spec.whatwg.org/multipage/infrastructure.html#times
|
||||
if ($timestamp === false && $this->getHTML5()) {
|
||||
$fromFormatter->setPattern('HH:mm');
|
||||
$fromFormatter->setPattern(str_replace(':ss', '', DBTime::ISO_TIME));
|
||||
$timestamp = $fromFormatter->parse($time);
|
||||
}
|
||||
|
||||
|
@ -136,6 +136,10 @@ class DatetimeFieldTest extends SapphireTest
|
||||
$f = new DatetimeField('Datetime', 'Datetime', '2003-03-29 00:00:00');
|
||||
$this->assertTrue($f->validate(new RequiredFields()));
|
||||
|
||||
$f = (new DatetimeField('Datetime', 'Datetime'))
|
||||
->setSubmittedValue('2003-03-29 00:00');
|
||||
$this->assertTrue($f->validate(new RequiredFields()), 'Leaving out seconds (like many browsers)');
|
||||
|
||||
$f = new DatetimeField('Datetime', 'Datetime', 'wrong');
|
||||
$this->assertFalse($f->validate(new RequiredFields()));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user