2012-01-02 2 views
0

мне нужна помощь получать «на этой неделе» полный диапазон дат в следующем формате: YMDПолучить предыдущую дату недели диапазон PHP

Я успешно удалось получить «в этом месяце» полный диапазон дат, но не «это недельный "полный диапазон дат.

Это мой код "в этом месяце":

//Functions for later use 
function firstOfMonth() { 
    return date("Y-m-d", strtotime(date('m').'/01/'.date('Y').' 00:00:00')); 
} 

function lastOfMonth() { 
    return date("Y-m-d", strtotime('-1 second',strtotime('+1 month',strtotime(date('m').'/01/'.date('Y').' 00:00:00')))); 
} 

//Setup the date_range variables 
$date_start = firstOfMonth(); 
$date_end = lastOfMonth(); 

Любая помощь очень ценится!

ответ

6

Просто, чтобы вы знали, ваш код «первого месяца» неверен. Если вы в августе, это даст вам диапазон с 8 июля по 7 августа. Используйте правильный формат d/m/Y, когда делаете это так.

В течение недели, попробуйте следующее:

$start_week = strtotime("last monday midnight"); 
$end_week = strtotime("+1 week",$start_week); 

$start_week = date("Y/m/d",$start_week); 
$end_week = date("Y/m/d",$end_week); 
+1

Не будет ли это работать только на прошлой неделе, если его понедельник будет; если его вторник не будет в последний понедельник давать вчера? –

+0

^Да. Для понедельника на прошлой неделе вам нужно сделать '$ thisWeeksMonday = strtotime (« последний полдень »); $ lastWeeksMonday = strtotime ('- 1 неделя', $ thisWeeksMonday); '. Конечно, вам нужно проверить, является ли сегодня понедельник. Кроме того, в ответе есть опечатка. – musicliftsme

+0

@FranVerona Спасибо за редактирование. Я немного удивлен тем, что 1) я сделал эти ошибки и 2) они так долго не посещались! –

2

Лейтон Эверсон Вы правильны. Правильный формат, я думаю, должен быть:

strtotime('-2 Monday');