#php
#php
Вопрос:
28 дней составляют четыре недели, верно? Ну, я пытаюсь написать функцию, которая в основном возвращает что-то вроде этого week1, week2, week3, week4..Неделя 1 — это, по сути, первые 7 дней, начиная с сегодняшнего дня. Но это все, на что я был способен.
function week() {
$currentdate = time();
$numberofdays = 28;
for ($i=0; $i<$numberofdays; $i ) {
}
}
Комментарии:
1. если (i%7==0) повторить «неделя: «.$j ;
2. @Байрон Уитлок, при этом не используется текущая дата?
3. Пожалуйста, покажите, какой вывод вы ожидаете именно от сегодняшней даты.
4. Вы пытаетесь вернуть текущую дату недели?
Ответ №1:
Итак, вы пытаетесь сохранить все дни, например, для календаря, или просто сгенерировать день, с которого начинается каждая неделя?
Если вы пытаетесь сохранить все дни, попробуйте это:
function week($days = 28)
{
//Note, I added the number of days to the function arguments, so that it can be variable without having to change the code
if(!is_int($days) || $days <= 0)
{
return false;
}
$start = strtotime("midnight tonight");
$currentweek = 1;
$weeks = array();
for ($i = 1; $i <= $days; $i )
{
$weeks[$currentweek][] = $start ($i * 86400);
if(!(i % 7))
{
$currentweek ;
}
}
return $weeks;
}
Это должно вернуть массив временных меток, сгруппированных по неделям, начиная с полуночи в день, в течение $days
которого он выполняется в течение нескольких дней. Если вам нужны даты в правильном формате, вместо сохранения метки времени в массиве сохраните результат функции date() в метке времени.
Ответ №2:
смотрите документацию здесь:
http://www.php.net/manual/en/function.time.php
Я думаю, вы имеете в виду что-то вроде:
<?php
$nextWeek = time() (7 * 24 * 60 * 60);
// 7 days; 24 hours; 60 mins; 60secs
echo 'Now: '. date('Y-m-d') ."n";
echo 'Next Week: '. date('Y-m-d', $nextWeek) ."n";
// or using strtotime():
echo 'Next Week: '. date('Y-m-d', strtotime(' 1 week')) ."n";
?>
Приведенный выше пример выведет что-то похожее на:
Сейчас: 2005-03-30 На следующей неделе: 2005-04-06 На следующей неделе: 2005-04-06
Комментарии:
1. Если это произойдет примерно во время переключения на летнее время, это приведет к сбою. Как всегда при использовании временных меток для вычисления даты.
Ответ №3:
/**
* Returns the amount of weeks into the month a date is
* @param $date a YYYY-MM-DD formatted date
* @param $rollover The day on which the week rolls over
*/
function getWeeks($date, $rollover)
{
$cut = substr($date, 0, 8);
$daylen = 86400;
$timestamp = strtotime($date);
$first = strtotime($cut . "00");
$elapsed = ($timestamp - $first) / $daylen;
$i = 1;
$weeks = 1;
for($i; $i<=$elapsed; $i )
{
$dayfind = $cut . (strlen($i) < 2 ? '0' . $i : $i);
$daytimestamp = strtotime($dayfind);
$day = strtolower(date("l", $daytimestamp));
if($day == strtolower($rollover)) $weeks ;
}
return $weeks;
}
$dateNow = date("Y-m-d");
echo getWeeks($dateNow, "monday");