2015-07-10 5 views
0

Я ищу способ показать, какая дата была или была на текущей неделе, возможно, используя номер недели?Показать даты этой недели

Я попытался

echo date('d/m/Y', strtotime('previous monday')); 

, но очевидно, что это не работает на текущий день или даты в будущем

Может кто-нибудь помочь - им новичку! Благодаря

+1

Я не уверен, если я понимаю ваш вопрос. Какова ваша цель на самом деле? Вы хотите текущий день недели? –

+0

Пожалуйста, отредактируйте его, его довольно сбивает с толку! –

+0

Извините, я не знаю, как это сказать, я хочу получить даты для каждого дня недели с номера недели? – Shane

ответ

-1

Функция ниже должна дать вам в предыдущие дни по неделе вы вошли:

$weekdays = array('monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'); 
$result = array(); 

$today = date('d/m/Y', time()); 
$week = 1; 
$result['today'] = $today; 

foreach ($weekdays as $day) { 
    $previous = mktime(0, 0, 0, 1, 1, date('Y', time())); 
    $previous = strtotime('+' . $week . ' week', $previous); 
    $weekday = strtotime('previous ' . $day, $previous); 
    $result[$day] = date('d/m/Y', $weekday); 
} 

echo '<pre>'; 
print_r($result); 
echo '</pre>'; 

Input была неделя 1 так с 1 янв (четверг) Яну 7 (среда). Выход ниже:

Array ( [today] => 10/07/2015 [monday] => 05/01/2015 [tuesday] => 06/01/2015 [wednesday] => 07/01/2015 [thursday] => 01/01/2015 [friday] => 02/01/2015 [saturday] => 03/01/2015 [sunday] => 04/01/2015 )

Для текущей недели вы можете установить $week на:

$week = date('W', time()); // ISO-8601 week number of year, weeks starting on Monday (added in PHP 4.1.0) 

Вы можете проверить его здесь: http://www.writephponline.com/

+0

почему downvote? напишите комментарий как минимум. –

1

Если вы хотите даты недели вы можете использовать этот код

$week_start = new DateTime(); 
$week_start->setISODate($year,$week_no); 
echo $week_start->format('d-M-Y'); 

Я не проверял, но я думаю, что это даст вам дату понедельника, с которого вы можете чем путешествие к в другие дни.

Источник: http://www.lornajane.net/posts/2011/getting-dates-from-week-numbers-in-php

-1

Вот функция для получения даты, используя номер недели.
Первый параметр - это номер недели (1 = первая неделя года, режим установлен на ISO),
Второй параметр - индекс дня недели (0-6, 0 = понедельник, 6 = воскресенье)
Первый три параметра являются необязательными и в противном случае устанавливаются с текущими значениями.
Без какого-либо параметра вы получите текущую дату в формате, который вы использовали в вопросе.
Вы получите массив всех дней недели, если вы установите второй параметр (рабочий день) на 7 (или выше).
С форматом «H: i» вы можете видеть смещение летнего времени, например. это «01:00» летом и «00:00» в противном случае.

function getWeekDate($week=-1, $weekday=-1, $year=-1, $format="d/m/Y", $mode="ISO") { 
    // default is the current 
    if($week < 0) { $week = date("W"); } 
    if($weekday < 0) { $weekday = date("w")-1; } 
    if($weekday < 0) { $weekday+= 7; } // on sundays 
    if($year < 0) { $year = date("Y"); } 
    $time = strtotime("1 January $year", time()); 
    $day = date('w', $time); 
    if($mode=="ISO") { 
     // ISO 8601: first week of the year is the week with the first thursday 
     if($day<=4) { $day+= 7; } 
    } 
    $time+= ((7*$week)+1-$day)*24*3600; 
    $return = array(); 
    for($i=0;$i<=6;$i++) { 
     $return[$i] = date($format, $time); 
     $time+= 24*3600; 
    } 
    if(isset($return[$weekday])) { 
     $return = $return[$weekday]; 
    } 
    return $return; 
} 

// Examples: 
echo "<br>Current Date: ".getWeekDate(); 
echo "<br>Monday of the Current Week: ".getWeekDate(-1,0); 
echo "<br>Sunday of the Next Week: ".getWeekDate(date("W")+1,6); 
echo "<br>All Days of Week 28: ".print_r(getWeekDate(28,7),true); 
0

Вот что я хотел бы сделать. По существу, найдите последнее воскресенье (если только целевая дата не будет в воскресенье), а затем просто зациклитесь на днях, пока не наберете субботу.

<?php 
//our target timestamp to get the week 
// $targetDate = time(); //today 
$targetDate = strtotime('1-Jan-2015'); //specific date 

//if target day is not day 0 (sunday) 
if(date('w', $targetDate) > 0) { 
    //get the last sunday 
    $sunday = strtotime('last sunday', $targetDate); 
} else { 
    //target day is sunday, get target date 
    $sunday = $targetDate; 
} 

//if you want shorthand ternary statement, this would work for finding sunday. I wrote it out above so it is easier to understand: 
// $sunday = date('w', $targetDate) ? strtotime('last sunday', $targetDate) : $targetDate; 

//get the following saturday as our stop point 
$saturday = strtotime('saturday', $sunday); 

//loop over each day of the week 
for(
    $currentDay = $sunday;  //start on sunday 
    $currentDay <= $saturday; //while we aren't on saturday yet 
    $currentDay = strtotime('+1 day', $currentDay) //add one day after each loop 
){ 
    //echo out current day's date 
    echo date('d-M-Y', $currentDay).'<br>'; 
} 

example

Я лично предпочитаю это, потому что вы можете делать другие вещи, в петле, а также такие, как эхо некоторые значения для конкретной даты.

Смежные вопросы