2016-03-29 189 views
-1

我有这段代码,它将日期设置为360天后, 我想知道如何更改这段代码以使日期昨天日期,28/3/2016设置日期到昨天的日期

$tmpdate = new DateTime(date("Y-m-d")); 
      $tmpdate->add(new DateInterval('P360D')); 
      $Available = $tmpdate->format('Y-m-d'); 
+0

如果整数大小是32位,未来日期是不可能的。将日期直接作为字符串传递给构造函数。 –

+0

昨天怎么样? – Aurora

+0

'$ tmpdate-> sub(new DateInterval('P1D'));' –

回答

2

你可以这样做:

date("Y-m-d", strtotime("-1 day")); // yesterday (based on server date) 

对于可以使用的strtotime任何其他日期:

strtotime("30-12-9999"); 

我希望它可以帮助你!

问候。

+0

谢谢!我基本上想要这个。 – Aurora

1

昨日:

echo date("Y m d h:i",time() -60*60*24); // 24 hours ago. 
echo date("Y m d",time() -60*60*24); // yesterday as in date. 

正如马克指出,下面我没想到夏令时。所以...

$date = new DateTime(null, new DateTimeZone('Europe/Stockholm')); // Change to suit 
$Heretime = $date->format('H'); 
$date->setTimezone(new DateTimeZone('UTC')); 
$Difftime = $date->format('H') - $Heretime; 

echo date("Y m d h:i",time() -60*60*(24-$Difftime)); // 24 hours ago in UTC. 
echo date("Y m d",time() -60*60*(24-$Difftime)); // yesterday as in date in UTC. 

并从那里你可以将其转换回来我猜...或者我可能完全失去了?

+0

不,如果你在夏时制的风口浪尖....你假设每一个一天的长度相同 –

+0

True ...在这种情况下,我想你需要将时间与UTC时间相匹配,看看它是否是夏令时? – Andreas