【发布时间】:2019-06-18 18:50:58
【问题描述】:
我将整个代码放在这里。我想为一年中的每个不同日期(日)打印出不同的信息,如我的代码中所示。从我提出问题的第一天起,我就一直在尝试不同的 PHP 函数,但我似乎没有得到答案。一周中的每隔一天都可以正常工作,但周末(周六或周日)一直令人头疼。请在周末打印正确的日期是需要更好的程序员回答的问题。(例如,让我们以本周和下周的周末为例,我应该有以下打印:Happy Weekend,今天是 Saturday 2019-02- 09。在第二天是星期日,我应该打印出:Happy Weekend, today is Sunday 2019-02-10。同样下周周末应该是 2019-02- 16 和 2019-02-17 分别在周末的不同日子,但这并没有发生。我已经做了将近 1 个月,甚至在两周前在这里发布我的问题之前。帮助兄弟。
$date = new DateTime('');
$datei = $date->format('Y-m-d');
$newYear = new DateTime('');
$newYear_date = $newYear->format('2019-01-01');
$ValentineS = new DateTime('');
$valentineS_date = $ValentineS->format('2019-02-14');
$WomenDay = new DateTime('');
$WomenDay_date = $WomenDay->format('2019-03-08');
/* ...other days not shown for brevity..*/
/*...move to the weekends....*/
$sat_begin = new DateTime('2019-01-21');
$sat_end = new DateTime('2019-12-30');
$sat_end = $sat_end->modify('+4 day');
$sat_interval = new DateInterval('P1D');
$sat_daterange = new DatePeriod($sat_begin, $sat_interval, $sat_end);
$sun_begin = new DateTime('2019-01-22');
$sun_end = new DateTime('2019-12-31');
$sun_end = $sun_end->modify('+4 day');
$sun_interval = new DateInterval('P1D');
$sun_daterange = new DatePeriod($sun_begin, $sun_interval, $sun_end);
foreach ($sat_daterange as $sat_date){
$saturday = date('w', strtotime($sat_date->format('Y-m-d')));
if ($saturday == 6 && $datei == $sat_date) {
}
}foreach ($sun_daterange as $sun_date) {
$sunday = date('w', strtotime($sun_date->format('Y-m-d')));
if ($sunday == 0 && $datei == $sun_date) {
}
}
switch ('Y-m-d') {
case '2019-01-01':
echo 'HAPPY NEW YEAR today is Tuesday 2019-01-01. A Public Holiday';
break;
case '2019-02-14':
echo "HAPPY VALENTINE'S DAY , today is Thursday 2019-02-14 an observed
day, but NOT A PUBLIC HOLIDAY ";
break;
case '2019-03-08':
echo "HAPPY WOMEN'S DAY , today is Friday 2019-03-08 an observed day to
recognize women, but NOT A PUBLIC HOLIDAY ";
break;
case $sat_date->format('Y-m-d'):
echo 'HAPPY WEEKEND, today is '.'<b>'.'Saturday '.$sat_date->format("Y-m-d").'</b>'.'<br>' ;
break;
case $sun_date->format("Y-m-d"):
echo 'HAPPY WEEKEND, today is '.'<b>'.'Sunday '.$sun_date->format("Y-m-d").'</b>'.'<br>' ;
break;
default:
echo "TODAY IS A WORKDAY, have a good day!".'<br>';
break;
【问题讨论】:
-
PHP的
DatePeriod类中没有diff()方法,要获取区间,请调用getDateInterval()方法,请查看文档:secure.php.net/manual/en/class.dateperiod.php