PHP DateTime中函数的值?

okay, I am at my wits end with this. been trying to solve this for 3 days now and I am getting nowhere with this.

I need to get the value of $offset between two locations and take it off of a set time which is (00:00).

here is how I set the $offset value and it works just fine.

<?php

if( isset($_POST['submit']))
{
    //be sure to validate and clean your variables
    $timezone1 = htmlentities($_POST['timezone1']);
    $timezone2 = htmlentities($_POST['timezone2']);

    //then you can use them in a PHP function. 
    function get_timezone_offset( $origin_tz, $remote_tz ) {
        $timezone1 = new DateTimeZone ( $origin_tz );
        $timezone2 = new DateTimeZone ( $remote_tz );

        $datetime1 = new DateTime ("now", $timezone1);
        $datetime2 = new DateTime ("now", $timezone2);

        $offset = $timezone1->getOffset($datetime1) - $timezone2->getOffset($datetime2);
        return $offset;

    }

$offset = get_timezone_offset($timezone1, $timezone2);

}

?>

And here is how I've tried to do what i want using DateTime, this code will only echo's the $offset value without taking it off of the 00:00

<?php
if (0 > $offset)
{
// set an object with the current date
$date = new DateTime();
$date->setTime(00, 00);

// the second date
$date2 = new DateTime($offset/3600 * 1);

// apply the diff() method, getting a DateInterval object ($diDiff)
$diDiff = $date->diff($date2) ;
}
echo $diDiff->format("%H:%i");
?> 

And i even tried to use strtotime but strtotime returns a wrong value and i have been advised by some guys on stackoverflow to use DateTime.

<?php
$time1 = strtotime('00:00');

if (0 > $offset)
{
   // For negative offset (hours behind)
  $hour_dif = date('H:i', strtotime($time1 -$offset/3600));
  $time1 = "{$hour_dif}";
}
elseif (0 < $offset)
{
   // For positive offset (hours ahead)
     $hour_dif = date('H:i', strtotime($time1 +$offset/3600));
     $time1 = "{$hour_dif}";

}
else
{
   // For offsets in the same timezone.
   $time1 = "in the same timezone";
}

echo "{$time1}";
?>

Please someone help me out as it is absolutely killing my time.

The following code will print the input time adjusted by $offset amount of hours.

$date = new DateTime();
$date->setTime(00, 00);

$date->add(DateInterval::createFromDateString("{$offset} hours"));

echo $date->format('H:i');

I have, again, tested this solution (with PHP 5.4.17) and it correctly shifts the time.

PHPFiddle: http://phpfiddle.org/main/code/rhd-pj4

You can also easily solve this using Carbon, a class that will greatly simplify doing date calculations of any kind:

// example timezones
$timezone1 = 'Europe/Berlin'; 
$timezone2 = 'Asia/Yakutsk'; 

$dt1 = Carbon::createFromDate(2000, 1, 1, $timezone1);
$dt2 = Carbon::createFromDate(2000, 1, 1, $timezone2);

// false will force a relative difference, so it can be a negative result
$difference = $dt1->diffInMinutes($dt2, false);

$dtMidnight = Carbon::create(2000, 1, 1, 12, 0, 0);

// get the difference from midnight
$differenceFromMidnight = $dtMidnight->addMinutes($difference);

echo $differenceFromMidnight->hour;
echo $differenceFromMidnight->minute;

This handles both positive and negative offsets:

$sign = $offset >= 0 ? 1 : -1;
$offset = $offset * $sign;  // make sure offset is a positive number

// set an object with the current date
$date = new DateTime();
$date->setTime(00, 00);

// the second date
$date2 = new DateTime();
$interval = new DateInterval("PT" . $offset . "S");
if ($sign > 0) {
    $date2->add($interval);
} else {
    $date2->sub($interval);
}

echo $date2->format("H:i");