我正在檢查當前時間是否在指定的範圍內,但得到奇怪的行爲。是否date-> getTimestamp返回該日期的時間00:00:01?
我想知道,也許當我做$ end_date-> getTimestamp()我得到的那一天的第一分鐘的時間戳?
在這種情況下,我需要添加(60 * 60 * 24)-1到時間戳以獲得該$ end_date的23:59:59對不對?
private function check_date_in_range($start_date, $end_date)
{
//Get current time
$user_ts = time();
if ($start_date == null && $end_date == null) {
//if both are null...
return 1;
}
elseif ($start_date != null && $end_date != null) {
// if none is null
//Convert dates to timestamp for comparison
$start_ts = $start_date->getTimestamp();
$end_ts = $end_date->getTimestamp();
// Check that current date is between start & end otherwise return FALSE.
return (($user_ts >= $start_ts) && ($user_ts <= $end_ts));
您沒有得到「第一分鐘」的時間戳,但是無論您的日期是什麼時間戳。既然你不顯示它們是如何創建的,我們不知道它可能是什麼。我只能提供你不需要轉換爲時間戳(比較直接對象是可能的),並且做手動時間戳操作通常會引入微妙的與DST相關的錯誤。 – Jon
Whare是'$ start_date'和'$ end_date'變量嗎?你可以'var_dump()'他們並告訴我們?這個方法必須返回什麼? –
如果您期待'DateTime'參數,您應該爲它們鍵入提示,即'check_Date_in_range(DateTime $ start_date = null,DateTime $ end_date = null)'。 –