我在使用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选择中轻松使用。
答案 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"));
}
答案 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
}
?>