cakePHP 使用 I18 Time addMinutes 函数更新每个相关变量,而不仅仅是当前实例

cakePHP use of I18 Time addMinutes function updates every related variable, not just the current instance

我一直在尝试为竞争对手的不同航班设置开始时间。 addMinutes 函数似乎更新了与我试图更改的“ONE”关联的每个变量。这是预期的结果,还是我遗漏了一些非常简单的东西?

感谢您的协助,

public function test_i18_addminutes( $a_time = null )
{
    $b_time = $a_time ?: Time::now();

    for ( $i = 1; $i < 5; $i++ ) {
        $use_time = $b_time;
        debug( "BTIME: $b_time   USETIME: $use_time" );

        for ( $j = 1; $j < 7; $j++ ) {
            $mytime = $use_time->addMinutes( 15.0 );
            debug( "     MYTIME: $mytime      BTIME: $b_time   USETIME: $use_time" );
        }
    }
    $this->redirect( '/' );
}

\src\Controller\TestsController.php (line 89)

'BTIME: 9/14/21, 6:09 PM USETIME: 9/14/21, 6:09 PM'

' 我的时间:9/14/21,6:24 下午 BTIME:9/14/21,6:24 下午 USETIME:9/14/21,6:24 下午'

' 我的时间:9/14/21,6:39 下午 BTIME:9/14/21,6:39 下午 USETIME:9/14/21,6:39 下午'

' 我的时间:9/14/21,6:54 下午 BTIME:9/14/21,6:54 下午 USETIME:9/14/21,6:54 下午'

' 我的时间:9/14/21,7:09 下午 BTIME:9/14/21,7:09 下午 USETIME:9/14/21,7:09 下午'

' 我的时间:9/14/21,7:24 下午 BTIME:9/14/21,7:24 下午 USETIME:9/14/21,7:24 下午'

' 我的时间:9/14/21,7:39 下午 BTIME:9/14/21,7:39 下午 USETIME:9/14/21,7:39 下午'

'BTIME: 9/14/21, 7:39 PM USETIME: 9/14/21, 7:39 PM'

' 我的时间:9/14/21,7:54 下午 BTIME:9/14/21,7:54 下午 USETIME:9/14/21,7:54 下午'

' 我的时间:9/14/21,8:09 下午 BTIME:9/14/21,8:09 下午 USETIME:9/14/21,8:09 下午'

您的所有变量 a_timeb_timeuse_time 都指向同一个对象。此外 \Cake\I18n\Time 是可变的,所以 $mytime 也是同一个对象。

如果您想要不可变的时间对象,请改用 \Cake\I18n\FrozenTime。这些对象的时间操作方法将 return 个新实例。

另见