如果我给PHP提供一个开始日期,PHP是否能够确定下一个是星期一还是星期四,以及日期('YYYY-MM-DD')是什么?
ctehm74n1#
使用给定日期计算下一个星期一和星期四的日期:
$start = new DateTimeImmutable('2023-01-08'); $monday = $start->modify("next monday"); $thursday = $start->modify("next thursday");
将diff与if语句配合使用,显示结果
diff
if
if ( ($start->diff($monday)->days < $start->diff($thursday)->days ) ) { echo "monday"; } else { echo "thursday"; }
fslejnso2#
下星期一或星期四是两者中较小的一个。如果使用DateTime而不是DateTimeImmutable,则必须使用来自$start的副本(克隆)。
$start = new DateTime('2022-11-19'); $nextMondayOrThursday = Min( (clone $start)->modify("next monday"), (clone $start)->modify("next thursday") ); echo $nextMondayOrThursday->format('l, d F Y'); //Monday, 21 November 2022
尝试自我:https://3v4l.org/Y5sE5在数组中指定星期几的简短形式的解决方案提供了更大的灵活性。通过这种方式,还可以指定一周中的3天或更多天。
$start = date_create('2022-11-20'); $next = ['Mon','Thu','Fri']; while(!in_array($start->modify('+1 Day')->format('D'),$next)); echo $start->format('l, d F Y');
建议通过验证$next来确保while循环不会无限期地运行。
2条答案
按热度按时间ctehm74n1#
使用给定日期计算下一个星期一和星期四的日期:
将
diff
与if
语句配合使用,显示结果fslejnso2#
下星期一或星期四是两者中较小的一个。如果使用DateTime而不是DateTimeImmutable,则必须使用来自$start的副本(克隆)。
尝试自我:https://3v4l.org/Y5sE5
在数组中指定星期几的简短形式的解决方案提供了更大的灵活性。通过这种方式,还可以指定一周中的3天或更多天。
建议通过验证$next来确保while循环不会无限期地运行。