Skip to content

Commit b29a9b3

Browse files
committed
Merge pull request #92 from cakephp/issue-91
Fix Date constructor with relative strings.
2 parents 4e1dacb + af00e88 commit b29a9b3

File tree

4 files changed

+16
-3
lines changed

4 files changed

+16
-3
lines changed

src/Date.php

-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ class Date extends DateTimeImmutable implements ChronosInterface
3030
use Traits\FrozenTimeTrait;
3131
use Traits\MagicPropertyTrait;
3232
use Traits\ModifierTrait;
33-
use Traits\RelativeKeywordTrait;
3433
use Traits\TestingAidTrait;
3534

3635
/**

src/MutableDate.php

-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ class MutableDate extends DateTime implements ChronosInterface
3030
use Traits\FrozenTimeTrait;
3131
use Traits\MagicPropertyTrait;
3232
use Traits\ModifierTrait;
33-
use Traits\RelativeKeywordTrait;
3433
use Traits\TestingAidTrait;
3534

3635
/**

src/Traits/FrozenTimeTrait.php

+5
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
trait FrozenTimeTrait
2020
{
2121

22+
use RelativeKeywordTrait;
23+
2224
/**
2325
* Removes the time components from an input string.
2426
*
@@ -39,6 +41,9 @@ protected function stripTime($time)
3941
if ($time === null || $time === 'now' || $time === '') {
4042
return date('Y-m-d 00:00:00');
4143
}
44+
if ($this->hasRelativeKeywords($time)) {
45+
return date('Y-m-d 00:00:00', strtotime($time));
46+
}
4247
return preg_replace('/\d{1,2}:\d{1,2}:\d{1,2}/', '00:00:00', $time);
4348
}
4449

tests/Date/ConstructTest.php

+11-1
Original file line numberDiff line numberDiff line change
@@ -231,9 +231,19 @@ public function testConstructWithTestNowNoMutation($class)
231231
{
232232
$class::setTestNow($class::create(2001, 1, 1));
233233
$date = new $class('+2 days');
234-
$this->assertDateTime($date, 2001, 1, 3);
234+
$this->assertDateTime($date, 2001, 1, 3, 0, 0, 0);
235235

236236
$date = new $class();
237237
$this->assertNotEquals('2001-01-03', $date->format('Y-m-d'));
238+
$class::setTestNow(null);
239+
}
240+
241+
/**
242+
* @dataProvider dateClassProvider
243+
*/
244+
public function testConstructWithRelative($class)
245+
{
246+
$c = new $class('+7 days');
247+
$this->assertEquals('00:00:00', $c->format('H:i:s'));
238248
}
239249
}

0 commit comments

Comments
 (0)