【问题标题】:date_time_set issue with 2 different datesdate_time_set 问题有 2 个不同的日期
【发布时间】:2014-08-27 02:22:27
【问题描述】:

我正在尝试设置 2 个变量之间的时间,但是当我检查它时,它会复制 2 次的更改。例如,我选择 1:00 和 23:00 ,两个日期都只显示 23:00。即使我每次都有不同的变量,我似乎也不明白为什么它会这样显示。我需要显示不同的日期。

输入日期:

01:30 and 21:00

我的代码:

$date = $_POST['datepicker'];

$time1 = $_POST['timepicker'];
$time2 = $_POST['timepicker2'];

$time1_array = explode(":",$time1);
$time2_array = explode(":",$time2);

$date = $_POST['datepicker'];

$date = new DateTime($date);
$date2 = $date;
$datefinal1 = date_time_set($date, $time1_array[0], $time1_array[1], 00);
$datefinal2 = date_time_set($date2,  $time2_array[0], $time2_array[1], 59);
$result = $datefinal1->format('Y-m-d H:i:s');
$result2 = $datefinal2->format('Y-m-d H:i:s');
print_r($datefinal1);

我得到的示例输出:

DateTime 对象 ( [date] => 2015-03-17 21:00:59 [timezone_type] => 3 [时区] => 欧洲/柏林)

即使我应该得到 $datefinal2 的值。

【问题讨论】:

    标签: php date datetime datetime-format


    【解决方案1】:

    对象是通过引用而不是值来复制的。如果您将一个对象分配给一个新变量,则两者都指向同一个对象,因此更改一个对象会更改另一个对象。要复制对象,您需要使用clone

    $date2 = $date;
    

    应该是:

    $date2 = clone $date;
    

    【讨论】:

    • 第一次在php中遇到clone,我刚查了一下,现在可以了。
    • $date2 = new DateTime($date); 怎么样?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多