Php 从当前日期算起接下来的6天?

Php 从当前日期算起接下来的6天?,php,arrays,Php,Arrays,我尝试从当前日期开始存储接下来的6天,但我有点被困在这里,如何在$weekOfdays中存储接下来的6天。有什么简单的函数可以做到这一点吗 <?php $weekOfdays = array(); $day = date('l'); $weekOfdays[] = $day; $day = strtotime($day); $next = strtotime("+6 day",$day); $weekOfdays[] = date("l",$next); var_dump($weekOf

我尝试从当前日期开始存储接下来的6天,但我有点被困在这里,如何在
$weekOfdays
中存储接下来的6天。有什么简单的函数可以做到这一点吗

<?php
$weekOfdays = array();
$day = date('l');
$weekOfdays[] = $day;
$day = strtotime($day);

$next = strtotime("+6 day",$day);
$weekOfdays[] = date("l",$next);
var_dump($weekOfdays);
// output
// array (size=2)
// 0 => string 'Monday' (length=6)
// 1 => string 'Sunday' (length=6)
?>

只需使用
while
循环来逐日调整。只需再增加一天
+1

$weekOfdays = array();
$date = time();
$next = strtotime('+6 days');
while ($date <= $next) { // loop until next six
    $weekOfdays[] = date('l', $date); // push the day name
    $date = strtotime('+1 day', $date); // add +1 on $date
}
print_r($weekOfdays);
$weekOfdays=array();
$date=time();
$next=STROTIME(“+6天”);

虽然($date我相信您需要一个for循环:

$weekOfdays = array();
$day = date('l');
$weekOfdays[] = $day;
$day = strtotime($day);


for($i = 1; $i <= 6; ++$i) {
    $next = strtotime("+$i day",$day);
    $weekOfdays[] = date("l",$next);
} 
$weekOfdays=array();
$day=日期('l');
$weekOfdays[]=$day;
$day=标准时间($day);
对于($i=1;$i
$weekOfdays=array();
$date=date(“l”);//当前日期
对于($i=0;$i<7;$i++){
$weekOfdays[]=日期(“l”,标准时间($date.+$i天”);
}
var_dump(周/天);
这里有一个不直接依靠自己计算的方法:

$days = []; $period = new DatePeriod( new DateTime(), // Start date of the period new DateInterval('P1D'), // Define the intervals as Periods of 1 Day 6 // Apply the interval 6 times on top of the starting date ); foreach ($period as $day) { $days[] = $day->format('l'); } $days=[]; $period=新的日期周期( new DateTime(),//期间的开始日期 new DateInterval('P1D'),//将间隔定义为1天的时段 6//在开始日期的顶部应用间隔6次 ); foreach($期间为$天) { $days[]=$day->format('l'); } 下面是对代码的简单修改,它将显示总天数


有很多种方式,其中一些示例如下所述:

1)在循环中使用
strotime
函数和temp
$date
变量

$date = date('Y-m-d'); //today date
$weekOfdays = array();
for($i =1; $i <= 7; $i++){
    $date = date('Y-m-d', strtotime('+1 day', strtotime($date)));
    $weekOfdays[] = date('l : Y-m-d', strtotime($date));
}
print_r($weekOfdays);
3)使用
DateTime
类和
modify
方法

$date = date('Y-m-d'); //today date
$weekOfdays = array();
$date = new DateTime($date);

for($i=1; $i <= 7; $i++){
    $date->modify('+1 day');
    $weekOfdays[] = $date->format('l : Y-m-d');
}

print_r($weekOfdays);
5)使用
DatePeriod
DateInterval
DateTime

$date = date('Y-m-d'); //today date
$weekOfdays = array();
$date = new DateTime($date);

for($i=1; $i <= 7; $i++){
    $date->add(new DateInterval('P1D'));
    $weekOfdays[] = $date->format('l : Y-m-d');
}

print_r($weekOfdays);
$date = date('Y-m-d', strtotime('+1 day')); //tomorrow date
$weekOfdays = array();
$begin = new DateTime($date);
$end = new DateTime($date);
$end = $end->add(new DateInterval('P7D'));
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval ,$end);

foreach($daterange as $dt){
    $weekOfdays[] = $dt->format('l : Y-m-d');
}

print_r($weekOfdays);
今天是4月12日星期二,因此所有代码的输出将为:

Array
(
    [0] => Wednesday : 2016-04-13
    [1] => Thursday : 2016-04-14
    [2] => Friday : 2016-04-15
    [3] => Saturday : 2016-04-16
    [4] => Sunday : 2016-04-17
    [5] => Monday : 2016-04-18
    [6] => Tuesday : 2016-04-19
)
有关更多详细信息,请查看:


检查以下内容。此处数组获取包括当前日期在内的7天名称

$weekOfdays = array();
for($i = 1,$nxtday = time(); $i<=7; $i++)
{
    $weekOfdays[] = date("l", $nxtday);
    $nxtday += 86400;
}
var_dump($weekOfdays);
$weekOfdays=array();

对于($i=1,$nxtday=time();$i使用
strottime
函数和
while循环

$weekOfdays = array();
$current_date = time(); //get current date.
$next = strtotime('+6 days');
while ($current_date <= $next) { 
    $weekOfdays[] = date('l', $current_date); 
    $current_date = strtotime('+1 day', $current_date); // add next date
}

echo "<pre>";
print_r($weekOfdays);
echo "</pre>";
使用mktime()而不是strotime()的目的是:

last week - 1366574400 / 22-04-2013 00:00; expected 15-04-2013
this week - 1367179200 / 29-04-2013 00:00; expected 22-04-2013
next week - 1367784000 / 06-05-2013 00:00; expected 29-04-2013
我建议在使用strotime()时仔细检查预期结果


循环创建一个
。请参阅:这是我所说的一个聪明的解决方案。+1.也许值得一提的是,DatePeriod可以从PHP 5.3中获得。如果有人对速度感兴趣,我已经做了一些重复次数为10000次的测试。没有输出的结果:#1:0.4818s#2:0.3317s#3:0.1785s(最快的)#4:0.1885s#5:0.2226s 356(被接受的答案):0.1396s(获胜者-您需要有如上所述的PHPV5.3+)
$date = date('Y-m-d', strtotime('+1 day')); //tomorrow date
$weekOfdays = array();
$begin = new DateTime($date);
$end = new DateTime($date);
$end = $end->add(new DateInterval('P7D'));
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval ,$end);

foreach($daterange as $dt){
    $weekOfdays[] = $dt->format('l : Y-m-d');
}

print_r($weekOfdays);
Array
(
    [0] => Wednesday : 2016-04-13
    [1] => Thursday : 2016-04-14
    [2] => Friday : 2016-04-15
    [3] => Saturday : 2016-04-16
    [4] => Sunday : 2016-04-17
    [5] => Monday : 2016-04-18
    [6] => Tuesday : 2016-04-19
)
$weekOfdays = array();
for($i = 1,$nxtday = time(); $i<=7; $i++)
{
    $weekOfdays[] = date("l", $nxtday);
    $nxtday += 86400;
}
var_dump($weekOfdays);
$weekOfdays = array();
$current_date = time(); //get current date.
$next = strtotime('+6 days');
while ($current_date <= $next) { 
    $weekOfdays[] = date('l', $current_date); 
    $current_date = strtotime('+1 day', $current_date); // add next date
}

echo "<pre>";
print_r($weekOfdays);
echo "</pre>";
Array
(
    [0] => Friday
    [1] => Saturday
    [2] => Sunday
    [3] => Monday
    [4] => Tuesday
    [5] => Wednesday
    [6] => Thursday
)
<?php
$weekOfdays = array();
$currentDay = time();
for ($i = 0; $i < 7; $i++) {
    $weekOfdays[] = date('l', $currentDay);
    $currentDay = strtotime('+1 day', $currentDay);
}
var_dump($weekOfdays);
array (size=7)
  0 => string 'Friday' (length=6)
  1 => string 'Saturday' (length=8)
  2 => string 'Sunday' (length=6)
  3 => string 'Monday' (length=6)
  4 => string 'Tuesday' (length=7)
  5 => string 'Wednesday' (length=9)
  6 => string 'Thursday' (length=8)
<?php
$weekOfDays = array();
$now = time();
$daysCnt = 6;
while ($daysCnt > 0) {
   $now = mktime(0,0,0,date('m',$now),date('d',$now)+1,date('Y',$now));
   $weekOfDays[] = date('l', $now);
   $daysCnt--;
}
print_r($weekOfDays);
Array
(
    [0] => Saturday
    [1] => Sunday
    [2] => Monday
    [3] => Tuesday
    [4] => Wednesday
    [5] => Thursday
)
<?php
date_default_timezone_set("Europe/Moscow");
$today = date("d-m-Y",mktime(0,0,0,4,28,2013)); // 28-04-2013, sunday
$lastWeek = strtotime("last week $today");
$thisWeek = strtotime("this week $today");
$nextWeek = strtotime("next week $today");

echo "last week - ".$lastWeek." / ".date("d-m-Y H:i\n",$lastWeek);
echo "this week - ".$thisWeek." / ".date("d-m-Y H:i\n",$thisWeek);
echo "next week - ".$nextWeek." / ".date("d-m-Y H:i\n",$nextWeek);
last week - 1366574400 / 22-04-2013 00:00; expected 15-04-2013
this week - 1367179200 / 29-04-2013 00:00; expected 22-04-2013
next week - 1367784000 / 06-05-2013 00:00; expected 29-04-2013