28天组成四周对吗?好吧,我正在尝试编写一个基本上返回类似于week1,week2,week3,week4的函数.Week1基本上是从今天开始的前7天。但这是我能够走的。
function week() {
$currentdate = time();
$numberofdays = 28;
for ($i=0; $i<$numberofdays; $i++) {
}
}
答案 0 :(得分: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()函数的结果存储在时间戳上。
答案 1 :(得分:0)
请参阅此处的文档:
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
答案 2 :(得分:0)
/**
* 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");