两个值的时区重置只需要一个

时间:2013-04-03 15:12:32

标签: perl datetime

set_time_zone()导致问题

$messagedate = \Datetime variable\
$messagedate_tz = $messagedate;

$messagedate_tz->set_time_zone('UTC');
$messagedate_tz->set_time_zone('America/Goose_Bay');

当我执行此操作时。 messagedate的时间也会重置为America / Goose_Bay。

请帮忙

1 个答案:

答案 0 :(得分:1)

假设\Datetime variable\表示DateTime类的对象(或任何其他类,对于此问题),您的问题是$messagedate_tz = $messagedate;创建对同一对象的第二个引用,它不会创建新对象。

您应该使用$messagedate_tz = $messagedate->clone;(再次,假设它是一个DateTime对象;其他类可能有不同的方法名称来创建副本)来创建一个与原始对象相同的新对象,然后可以修改而不影响原件。