Browse Source

Fix up Date support.

mscherer 1 year ago
parent
commit
b11672ab6d

+ 0 - 1
src/I18n/DateTime.php

@@ -1301,7 +1301,6 @@ class DateTime extends CakeDateTime {
 			}
 			$date = mktime(0, 0, 0, (int)$pieces[1], (int)$pieces[0], (int)$year);
 		} elseif (strpos($date, '-') !== false) {
-			//$pieces = explode('-', $date);
 			$date = strtotime($date);
 		} else {
 			return 0;

+ 6 - 2
src/View/Helper/TimeHelper.php

@@ -5,6 +5,7 @@ namespace Tools\View\Helper;
 use Cake\Core\App;
 use Cake\Core\Configure;
 use Cake\Core\Exception\CakeException;
+use Cake\I18n\Date;
 use Cake\View\Helper\TimeHelper as CakeTimeHelper;
 use Cake\View\View;
 
@@ -98,7 +99,7 @@ class TimeHelper extends CakeTimeHelper {
 	 * Output the age of a person within a sane range.
 	 * Defaults to the $default string if outside of that range.
 	 *
-	 * @param string|int|null $date
+	 * @param \Cake\I18n\Date|string|int|null $date
 	 * @param string $default
 	 * @return string Age on success, $default otherwise
 	 */
@@ -106,7 +107,10 @@ class TimeHelper extends CakeTimeHelper {
 		if ($date === null) {
 			return $default;
 		}
-		$age = $this->age($date, null);
+		if ($date instanceof Date) {
+			$date = $date->toNative();
+		}
+		$age = $this->age($date);
 		if ($age >= 1 && $age <= 99) {
 			return (string)$age;
 		}

+ 1 - 1
tests/TestCase/I18n/DateTimeTest.php

@@ -417,7 +417,7 @@ class DateTimeTest extends TestCase {
 		$this->assertEquals('25', $this->Time->age($birthday, $relativeDate));
 
 		$relativeDate = '2010-04-09';
-		$this->assertEquals('25', $this->Time->age($birthday, $relativeDate));
+		$this->assertSame(25, $this->Time->age($birthday, $relativeDate));
 	}
 
 	/**

+ 3 - 0
tests/TestCase/View/Helper/TimeHelperTest.php

@@ -54,6 +54,9 @@ class TimeHelperTest extends TestCase {
 
 		$res = $this->Time->userAge('1901-01-01');
 		$this->assertSame('', $res);
+
+		$res = $this->Time->userAge(new Date('1981-02-03'));
+		$this->assertTrue($res >= 42 && $res <= 44);
 	}
 
 	/**