php日期问题

时间:2013-06-03 22:31:39

标签: php date

我在使用PHP日期函数时遇到了一些麻烦(在这方面我几乎没有知识)。

我希望将一周中的下一个5天保存在3个参数中,例如$month$dayofmonth$dayofweek等变量,并将其显示在6月4日星期二,每个部分可以放入其相应的html div元素的日期。

我在最近两天用不同的代码进行了实验但没有工作,3小时前我得出的结论是我这个月的方式,我会在月底发生冲突,因为名称更改。所以我会在5月31日星期五,5月1日星期六,5月2日星期天等等。

我现在所拥有的,我想我已经在月底纠正了这个问题。

$month = date("F");
$day_1 = date("j");
$day_2 = date("j", strtotime("+1 days"));
$day_3 = date("j", strtotime("+2 days"));
$day_4 = date("j", strtotime("+3 days"));
$day_5 = date("j", strtotime("+4 days"));
$wday_1 = date("l");
$wday_2 = date("l", strtotime("+1 weekday"));
$wday_3 = date("l", strtotime("+1 weekday"));
$wday_4 = date("l", strtotime("+1 weekday"));
$wday_5 = date("l", strtotime("+1 weekday"));
$next_month = date("F", strtotime("+1 month"));
echo $day_1." ".$wday_1." ";
if($day_1 == 28 || $day_1 == 29 || $day_1 == 30 || $day_1 == 31 || $day_2 == 28 || $day_2 == 29 || $day_2 == 30 || $day_2 == 31 ||
$day_3 == 28 || $day_3 == 29 || $day_3 == 30 || $day_3 == 31 || $day_4 == 28 || $day_4 == 29 || $day_4 == 30 || $day_4 == 31 ||
$day_5 == 28 || $day_5 == 29 || $day_5 == 30 || $day_5 == 31) { $month = $next_month; }
echo $month;

我已经阅读了有关日期的文档,但我需要在不同的变量中使用日期的每个部分,这些变量可以在本地化更改和SQL选择中轻松使用。

4 个答案:

答案 0 :(得分:1)

实现此目的的一种方法是使用DatePeriod; DatePeriod的实例是可迭代的,因此您可以在foreach循环中使用它们。

// a date period starting today spanning 5 days and separated into 1 day segments
$period = new \DatePeriod(new \DateTime(), new \DateInterval('P1D'), 4);
foreach ($period as $day) {
  echo $day->format('F j l');
}

这个可能对你想要做的事情有点过分,但DatePeriods经常被忽视,这是不幸的,因为它们真的很方便。

答案 1 :(得分:0)

使用DateTime个对象而不仅仅是date()个功能。如果我理解你想要的东西,你可以这样做:

$date = new DateTime();
for ($i = 0; $i < 5; ++$i) {
    echo $date->format('F j l'); // Month, day of month, day of week
    $date->modify('+1 day'); // this will change the timestamp stored in
                             // the DateTime object accordingly.
}

答案 2 :(得分:0)

根据the documentation you should have read之前的“使用不同代码进行最近2天的试验”,您只需使用以下内容即可获得所需日期而无需任何变量:

for($i = 1; $i <= 5; $i++) {
    date("F j l", strtotime("+".$i." days"));
}

http://php.net/manual/en/function.strtotime.php

答案 3 :(得分:-1)

附上一个简单的程序,以您想要的格式打印2013年的所有日子,日期,月份和星期以div分隔..

我建议您date format了解打印格式化日期的多种方法。

<?php

$inicio = new DateTime();
$inicio->setDate(2013, 1, 1);


$fim = new DateTime();
$fim->setDate(2014, 1, 1);

while($inicio < $fim)
{


    echo "<div>";
    echo $inicio->format("M"); 
    echo "</div>";

    echo "<div>";
    echo $inicio->format("j");
    echo "</div>";

    echo "<div>";
    echo $inicio->format("l");
    echo "</div>";

    echo "<br>";

    $inicio->add(new DateInterval('P1D')); // sums 1 day in date

}


?>