浏览代码

Fix up difference()

mscherer 1 年之前
父节点
当前提交
761dd277ac

+ 10 - 3
src/I18n/DateTime.php

@@ -80,14 +80,21 @@ class DateTime extends CakeDateTime {
 	 *
 	 * TODO: deprecate in favor of DateTime::diff() etc which will be more precise
 	 *
-	 * should only be used for < month (due to the different month lenghts it gets fuzzy)
+	 * should only be used for < month (due to the different month lengths it gets fuzzy)
 	 *
 	 * @param mixed $startTime (db format or timestamp)
-	 * @param mixed|null $endTime (db format or timestamp)
+	 * @param mixed $endTime (db format or timestamp)
 	 * @param array<string, mixed> $options
 	 * @return int The distance in seconds
 	 */
-	public static function difference($startTime, $endTime = null, array $options = []): int {
+	public static function difference($startTime, $endTime, array $options = []): int {
+		if ($startTime instanceof DateTimeInterface) {
+			$startTime = $startTime->getTimestamp();
+		}
+		if ($endTime instanceof DateTimeInterface) {
+			$endTime = $endTime->getTimestamp();
+		}
+
 		if (!is_int($startTime)) {
 			$startTime = strtotime($startTime);
 		}

+ 7 - 4
tests/TestCase/Utility/DateTimeTest.php

@@ -1,8 +1,9 @@
 <?php
 
-namespace Tools\Test\TestCase\Utility;
+namespace Tools\Test\TestCase\I18n;
 
 use Cake\Core\Configure;
+use Cake\I18n\Date;
 use DateTime as CoreDateTime;
 use Shim\TestSuite\TestCase;
 use Tools\I18n\DateTime;
@@ -235,19 +236,19 @@ class DateTimeTest extends TestCase {
 			//['2009-12-01 00:00:00', 'M', 'Dez.'],
 		];
 		foreach ($values as $v) {
-			$ret = $this->Time->localDate($v[0], $v[1], ['language' => 'de']);
+			$ret = $this->Time->niceDate($v[0], $v[1], ['language' => 'de']);
 			$this->assertEquals($v[2], $ret);
 		}
 
 		$date = '2009-12-01 00:00:00';
 		$format = 'd.m.Y';
-		$result = $this->Time->localDate($date, $format, ['language' => 'de', 'oclock' => true]);
+		$result = $this->Time->niceDate($date, $format, ['language' => 'de', 'oclock' => true]);
 		$expected = '01.12.2009';
 		$this->assertEquals($expected, $result);
 
 		$date = '2009-12-01 00:00:00';
 		$format = 'd.m.Y, H:i';
-		$result = $this->Time->localDate($date, $format, ['language' => 'de', 'oclock' => true]);
+		$result = $this->Time->niceDate($date, $format, ['language' => 'de', 'oclock' => true]);
 		$expected = '01.12.2009, 00:00 ' . __d('tools', 'o\'clock');
 		$this->assertEquals($expected, $result);
 	}
@@ -314,6 +315,8 @@ class DateTimeTest extends TestCase {
 		$values = [
 			['2010-02-23 11:11:11', '2010-02-23 11:12:01', 50],
 			['2010-02-23 11:11:11', '2010-02-24 11:12:01', DAY + 50],
+			[new DateTime('2010-02-23 11:11:11'), new DateTime('2010-02-23 11:12:01'), 50],
+			[new DateTime('2010-02-23 11:11:11'), new DateTime('2010-02-24 11:12:01'), DAY + 50],
 		];
 
 		foreach ($values as $v) {

+ 0 - 6
tests/TestCase/Model/Behavior/ConfirmableBehaviorTest.php

@@ -18,12 +18,6 @@ class ConfirmableBehaviorTest extends TestCase {
 	 */
 	protected $ConfirmableBehavior;
 
-	/**
-	 * @return void
-	 */
-	public function setUp(): void {
-		parent::setUp();
-	}
 
 	/**
 	 * ConfirmableBehaviorTest::testBasicValidation()