DrupalDateTime class not work
The code you are showing is wrong because DrupalDateTime::__construct() is expecting a string, while you are passing an integer, which is what Node::getCreatedTime() returns.

Instead of DrupalDateTime::__construct(), you should use DrupalDateTime::createFromTimestamp().

$date = DrupalDateTime::createFromTimestamp($variables['node']-&gt;getCreatedTime(), 'UTC');


Since the static method also accept a \DateTimeZone object as second parameter, your code could be similar to the following one.

if (isset($variables['node'])) {
  $date = DrupalDateTime::createFromTimestamp($variables['node']-&gt;getCreatedTime(), new \DateTimeZone('Asia/Tehran'));
  $variables['date'] = $date-&gt;format('Y/m/d');
}


Since you seem interested to get strings in a specific language, you should also set the language code.

if (isset($variables['node'])) {
  $date = DrupalDateTime::createFromTimestamp($variables['node']-&gt;getCreatedTime(), new \DateTimeZone('Asia/Tehran'), ['langcode' =&gt; 'the language code for the language you need']);
  $variables['date'] = $date-&gt;format('Y/m/d');
}