Saturday, September 6, 2025
HomeLanguagesHow to copy a DateTime object in PHP ?

How to copy a DateTime object in PHP ?

Given a DateTime object and the task is to create a copy of that object. To create a copy of DateTime object we use clone keyword which is described below:
A copy of DateTime object is created by using the clone keyword (which calls the object’s __clone() method if possible). An object’s __clone() method cannot be called directly. When an object is cloned, PHP will perform a shallow copy of all of the object’s properties. Any properties that are references to other variables will remain references.

Syntax: 

$DateTime_copy_object_name = clone $DateTime_object_to_be_copied

Below examples illustrate the cloning of DateTime object in PHP:

Example 1:  

PHP




<?php
 
// Program to create copy of DateTime object
 
// Creating object
$obj = new DateTime();
 
// Creating clone or copy of object
$copy = clone $obj;
 
// Printing initial values
echo "Printing initial values\n";
 
$result = $obj->format('Y-m-d H:i:s');
echo "Original object: $result\n";
 
$result = $copy->format('Y-m-d H:i:s');
echo "Cloned object: $result\n\n";
 
 
// Changing original object ($obj) value
// to verify other($copy) is clone or not
 
// This statement will add 3 Days
$obj->add(new DateInterval('P3D'));
 
// Printing values
echo "Printing values after change\n";
 
$result = $obj->format('Y-m-d H:i:s');
echo "Original object: $result\n";
 
 
$result = $copy->format('Y-m-d H:i:s');
echo "Cloned object: $result\n";
?>


Output: 

Printing initial values
Original object: 2020-04-14 17:14:18
Cloned object: 2020-04-14 17:14:18

Printing values after change
Original object: 2020-04-17 17:14:18
Cloned object: 2020-04-14 17:14:18

Example 2: Below program distinguishes clone from assignment ( = ) operator. 

PHP




<?php
 
// Program to create copy of DateTime object
 
// Creating object
$obj = new DateTime();
 
// Creating clone or copy of object
$copy = clone $obj;
 
$ref_obj = $obj;
 
// Printing initial values
echo "Printing initial values\n";
 
$result = $obj->format('Y-m-d H:i:s');
echo "Original object: $result\n";
 
$result = $ref_obj->format('Y-m-d H:i:s');
echo "Reference object: $result\n";
 
$result = $copy->format('Y-m-d H:i:s');
echo "Cloned object: $result\n\n";
 
 
// Changing original object ($obj) value
// to verify other($copy) is clone or not
 
// This statement will add 3 Months
$obj->add(new DateInterval('P3M'));
 
// Printing values
echo "Printing values after change\n";
 
$result = $obj->format('Y-m-d H:i:s');
echo "Original object: $result\n";
 
$result = $ref_obj->format('Y-m-d H:i:s');
echo "Reference object: $result\n";
 
$result = $copy->format('Y-m-d H:i:s');
echo "Cloned object: $result\n";
?>


Output: 

Printing initial values
Original object: 2020-04-14 17:14:49
Reference object: 2020-04-14 17:14:49
Cloned object: 2020-04-14 17:14:49

Printing values after change
Original object: 2020-07-14 17:14:49
Reference object: 2020-07-14 17:14:49
Cloned object: 2020-04-14 17:14:49

So, to make a copy of the object we use clone, don’t use (=) operator as it creates a reference.
 

RELATED ARTICLES

Most Popular

Dominic
32271 POSTS0 COMMENTS
Milvus
82 POSTS0 COMMENTS
Nango Kala
6641 POSTS0 COMMENTS
Nicole Veronica
11806 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11869 POSTS0 COMMENTS
Shaida Kate Naidoo
6754 POSTS0 COMMENTS
Ted Musemwa
7030 POSTS0 COMMENTS
Thapelo Manthata
6705 POSTS0 COMMENTS
Umr Jansen
6721 POSTS0 COMMENTS