我在這裏遇到問題..php - 早於給定日期時間的一小時
假設我有這種日期時間。
$date = strtotime($date);
我需要這被轉換成Unix的時間戳格式了一小時earlier..I試圖
$date = strtotime($date-86400)
,但在我看來,這是錯誤的。當我潛入餐桌時,它返回0。
什麼是實現這一目標的恰當方法?
謝謝。
我在這裏遇到問題..php - 早於給定日期時間的一小時
假設我有這種日期時間。
$date = strtotime($date);
我需要這被轉換成Unix的時間戳格式了一小時earlier..I試圖
$date = strtotime($date-86400)
,但在我看來,這是錯誤的。當我潛入餐桌時,它返回0。
什麼是實現這一目標的恰當方法?
謝謝。
strtotime會爲您提供日期的unix時間戳。從這個時間戳,你再減去你的時間:
$date = strtotime($date) - 3600; // 3600 = 60 * 60
如果你打電話strtotime($date - 3600)
,就好像獲得了-3600(例如strtotime(-3600)
)的時間,這是沒有意義的,因爲預期的strtotime一個字符串作爲第一個參數。
你可以這樣做:
$testDateStr = strtotime($date);
$finalDate = date("Y-m-d H:i:s", strtotime("-1 hour", $testDateStr));
希望它可以幫助
雖然這個答案很自負,對那些熟悉'date()'和'strtotime()'的人來說,它會改進你的答案,並給出一些解釋。 – mickmackusa 2017-04-20 21:05:13
86400秒爲一天,而不是一小時。
strtotime()的輸出是一個unix時間戳。提前3600秒是時間戳減1小時。所以:
$date = strtotime($somestring);
$hourago = $date - 3600;
,或者根據$ somestring的原始格式:
$hourago = strtotime($somestring . " - 1 hour");
嘗試此查詢
$query= "insert into yourTable(otherValues, date)
values (otherFields, DATE_ADD(NOW(),INTERVAL -1 hour))
使用DATE_ADD插入比當前時間少1小時的日期值。
因爲OP沒有要求'mysql'解決方案或'INSERT',所以解決了。還應該包括某種解釋,以便讀者能夠完全理解/從答案/方法中受益。 – mickmackusa 2017-04-20 21:01:54
沒有人提供DateTime
對象解決方案,所以我會的。 這是處理日期時間的最現代的方法,不需要任何分鐘&秒的計算。
我總是喜歡投入某種時區聲明來使事情變得明確。日光節約時間通常與日期時間操作有關,但在這種情況下可能還可以。隨時爲您的案件修改時區。
PHP手動鏈接:
代碼(包括格式化TI我比較)Demo Link:
$now=new DateTime('NOW UTC');
$now_stamp=$now->getTimestamp();
$formatted_now=$now->format("Y-m-d H:i:s");
echo "$now_stamp ($formatted_now)\n";
$hour_ago=$now->modify('-1 hour');
$hour_ago_stamp=$hour_ago->getTimestamp();
$formatted_hour_ago=$hour_ago->format("Y-m-d H:i:s");
echo "$hour_ago_stamp ($formatted_hour_ago)";
輸出:
1492687193 (2017-04-20 11:19:53)
1492683593 (2017-04-20 10:19:53)
有3600秒,一小時,一天86400秒。你必須減去3600秒。 'strtotime($ date) - 3600;' – Cheery 2012-02-27 04:20:11