如何克隆DateTime对象

时间:2014-11-12 05:00:39

标签: perl datetime

我有一些代码如下:

        my $d1 = $start_date;
        $c->log->debug(Dumper($start_date));

        my @date_range;

        while($d1 <= $end_date){
            push @date_range, $d1->day();
            $d1->add(days => 1);
        }

如何防止$ start_date发生变化?

2 个答案:

答案 0 :(得分:2)

在perl中,对象是标量引用。当你做&#34;我的$ d1 = $ start_date&#34;你正在使$ d1引用一个引用与$ start_date相同的对象。

您可能想要修改$ start_date的副本。我不知道$ start_date是什么类,但看看该类是否提供了一个拷贝构造函数供你使用。

答案 1 :(得分:1)

您可以使用克隆方法:

my $date = new DateTime();
my $temp_date = $date->clone();

这将是一个副本,而不是一个参考。相反,如果您执行以下操作:

my $temp_date = $date;

然后两者都会引用同一个对象。