2016-06-10 5 views
1

Ich habe einen Datumscode unter Erhalten:gestern Datum in PHP mit vorhandenen Datumsvariablen

$UTC = new DateTimeZone("UTC"); 
$newTZ = new DateTimeZone("America/New_York"); 
$date = new DateTime("2011-01-01 15:00:00", $UTC); 
$date->setTimezone($newTZ); 
echo $date->format('Y-m-d H:i:s'); 

Meine Frage ist, wie ich das gestern Zeit von 2011-01-01 15:00:00 bekommen. Ich benutze derzeit diese date('Ymd',strtotime("-1 days")), aber ich denke, es ist nicht richtig. Was ist der beste Weg, um das gestrige Datum mit meinem ersten Code zu bekommen?

+1

'$ date-> ändern (" - 1 Tag ")' – splash58

Antwort

1

können Sie verwenden, um die \DateTime::modify() Funktion: -

$date->modify('-1 day'); 

Oder Sie könnten ein DateInterval subtrahieren: -

$date->sub(new \DateInterval('P1D'); 

Siehe DateTime manual für weitere Informationen.

Wenn Sie nicht möchten, dass die ursprüngliche Variable $ date dann geändert werden Sie DateTimeImmutable stattdessen verwenden: -

$date = new \DateTimeImmutable(); 
$yesterday = $date->sub(new \DateInterval('P1D'); 
3

Es gibt Unmengen von Antworten auf diese Frage im Internet und auf Stackoverflow als auch. Also, noch einmal:

Verwenden :: ändern() -Methode auf Datetime: http://php.net/manual/en/datetime.modify.php

$date->modify('-24 hours') 
$date->modify('-1 day') 
1

Verwendung ändern Funktion

<?php 
$UTC = new DateTimeZone("UTC"); 
$newTZ = new DateTimeZone("America/New_York"); 
$date = new DateTime("2011-01-01 15:00:00", $UTC); 
$date->setTimezone($newTZ); 
echo $date->format('Y-m-d H:i:s'); 
$date->modify('-1 day'); 
echo "\n"; 
echo $date->format('Y-m-d H:i:s'); 
?> 

Check hier: https://eval.in/586553

Für weitere Informationen check this : http://php.net/manual/en/datetime.modify.php

2

Verwenden Sie dies:

$UTC = new DateTimeZone("UTC"); 
$newTZ = new DateTimeZone("America/New_York"); 
$date = new DateTime("2011-01-01 15:00:00", $UTC); 
$date->setTimezone($newTZ); 
echo $date->format('Y-m-d H:i:s'); 
echo "\n"; 
$interval = new DateInterval('P1D'); 
$date->sub($interval); 
echo $date->format('Y-m-d H:i:s'); 
Verwandte Themen