簡體   English   中英

如何在PHP中添加一分鍾到DateTime()對象?

[英]How can I add one minute to a DateTime() object in PHP?

我想做一個時間間隔: $start to $end $start總是與$end ,好像它們都被修改了。

$dt = new \DateTime();
$start = $dt;
$end = $dt->modify('+1 minute');
echo $start->format('i') . ' - ' . $end->format('i');

這只是給了我

50 - 50

當我想要的時候

49 - 50

我究竟做錯了什么?

編輯:我不想使用時間戳,只有DateTime()對象。

為什么會這樣

$start$end都引用同一個對象,所以當你向$dt添加1分鍾時, $start$end都會反映出這一變化。

你能做什么

要修復,請將$start$end設置$start datetime對象的新實例。

$dt = new \DateTime();
$start = new $dt;
$end = new $dt;
$end->modify('+1 minute');
echo $start->format('i') . ' - ' . $end->format('i');

已經給出的答案的替代方案是使用

  • DateTimeImmutable - 此類的行為與DateTime相同,只是它從不修改自身,而是返回一個新對象。

例:

$start = new \DateTimeImmutable();
$end = $start->modify('+1 minute');
echo $start->format('i') . ' - ' . $end->format('i');

這將給出您的預期結果。

您創建一個DateTime對象$dt然后使用相同的對象作為$start$end 您應該執行以下操作之一:

$dt = new \DateTime();
$start = $dt->format('i'); //Store the actual string before modifying
$dt->modify('+1 minute'); 
echo $start . ' - ' . $end->format('i');

要么:

$start = new \DateTime();
$end = new \DateTime();    
$end->modify('+1 minute'); 
echo $start->format('i') . ' - ' . $end->format('i');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM