DateTime :: diff () wird von der Zeitzone nicht beeinflusst, gibt jedoch immer den gleichen Wert zurück

Ich füge meinem System auktionsbasierte Daten hinzu. Zum Beispiel:

user's timezone  is : `America/Denver`
auction start time is : Thu, 21 Jun 2012 03:46:22 AM
auction period : 1 day.
auction end time : Fri, 22 Jun 2012 03:46:22 AM

Ich speichere alle diese Informationen so, wie sie in meiner Datenbank sind (d. H.Alle gespeicherten Zeiten basieren auf der Zeitzone des Benutzers).

Jetzt will ich das tatsächlichDifferenz zwischen Endzeit und aktueller Zeit (of America / Denver Zeitzone).

ich benutzteDateTime() funktionen

selbst ich konvertiere die Zeitzone nicht; es gibt den gleichen Unterschied zurück (und das ist auch falsch).

Mein PHP-Code ist unten; Sie finden es auch unterCodePad

$end_time = 'Fri, 22 Jun 2012 03:46:22 AM';
$tz = 'America/Denver';
dateDifference($end_time,$tz);

function dateDifference($end, $tz = NULL)
    {
      $owner_tz = new DateTimeZone($tz);
      //var_dump($owner_tz->getName()); 

      $from  = new DateTime("now", new DateTimeZone('GMT'));     
      $from ->setTimeZone($owner_tz);

      $to = new DateTime($end,new DateTimeZone('GMT'));
      /* @Note:I have commented below setTimeZone() because I have already stored 
       * `end time` as per user's  timezone, So I dont need to convert it again 
       * into user's timezone.you can un-comment below line. 
       * it doesn't affect the results anyways.
       */
     //$to ->setTimeZone($owner_tz);        

    //procedural style using date_diff()
    $interval = date_diff($from, $to);        
    var_dump($interval); 

    // OO style using dateTime::diff()
    $interval = $from->diff($to);       
    var_dump($interval);     
}

Kehrt zurück:

object(DateInterval)[4]
  public 'y' => int 0
  public 'm' => int 0
  public 'd' => int 0
  public 'h' => int 16
  public 'i' => int 40
  public 's' => int 24
  public 'invert' => int 0
  public 'days' => int 6015

Verweise:

DateTime()DateTime::diffDateTime::setTimeZoneUmgang mit der Konvertierung von Zeitzonen mit PHP DateTime

Antworten auf die Frage(2)

Ihre Antwort auf die Frage