2017-04-07 302 views
0

你好,如何防止PHP日期時間修改回顯格式?

我有一個簡單的問題,輸出我的DateTime對象。

<?php 

$today = new DateTime(); 
echo $today->format('Y-m-d'); // 2017-04-07 
echo $today->modify('+1 day')->format('Y-m-d'); // 2017-04-08 
echo $today->format('Y-m-d'); // 2017-04-08 but I want 2017-04-07 

我真的不想在輸出時改變我的對象。當我回顯$ x + 1時,$ x不會改變它的值。我如何輕鬆地使用它?我需要很好的技術將我的DataTime輸出到我的CRON中的數據庫。我輸出了很多次,並宣佈DateTime對象每個輸出之前會毀了我的代碼和有效性(例如50.000用戶* 30頁額外的DateTime對象的聲明。)

請幫忙,

亞瑟

回答

2

這對您有幫助嗎?

$start = new DateTimeImmutable('2013-01-29'); 
$datetime = $start->modify('+1 day'); 
echo $datetime->format('Y-m-d H:i:s'); 
0

保留變量

$today = new DateTime(); 
    $first = $today->format('Y-m-d'); // 2017-04-07 
    $second = $today->modify('+1 day')->format('Y-m-d'); // 2017-04-08 
    echo $first; 
    echo $second; 
2

而是簡單DateTime使用DateTimeImmutable

DateTimeImmutable對象的每個調用將返回新對象,所以你的源$today不會改變。

$today = new DateTimeImmutable(); 
echo $today->format('Y-m-d') . PHP_EOL; // 2017-04-07 
echo $today->modify('+1 day')->format('Y-m-d') . PHP_EOL; // 2017-04-08 
echo $today->format('Y-m-d') . PHP_EOL; // 2017-04-07 
+0

我給了你+1,規則是我需要在給你1分鐘前給予「最好」的規則:)謝謝。 – Edenwave

+0

這裏有一分鐘後,但它沒關係) –

+0

Norbert Boros:2017-04-07 16:37:10Z,u_mulder:2017-04-07 16:37:25Z :) – Edenwave