如果我向PHP提供一个开始的日期,它能确定下一个星期一还是星期四,以及日期(‘YYYY-MM-DD’)是什么吗?

推荐答案

下周一或周四是两者中较小的一个.如果使用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

try self :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循环不会无限期运行.

future 的时间,如下周一或下周四,也可以方便地编码为使用cron syntax的字符串.对于星期一或星期四00:00,字符串为:

'0 0 * * 1,4'

一周中的几天被写成从0表示星期日到6表示星期六的数字.一个很大的优势是,这些字符串可以很容易地存储在任何地方,如数据库中.有许多解决方案可以在PHP中实现它(例如cron-expression个).这只是一个使用Jspit\Dt类的例子:

use Jspit\Dt;

$cron = '0 0 * * 1,4'; 
$date = Dt::create('2022-11-21')->NextCron($cron);
//"2022-11-24 00:00:00.000000"

Php相关问答推荐

调用woocommerce_customer_Save_add动作挂钩时发生致命错误

SQLSTATE [42S02]:找不到基表或视图:1146 Table eshop. sessions不存在'''

在不超过PHP时间限制的情况下,在Laravel中高效地插入批量数据(25万条记录)?(队列、多租户)

在WooCommerce中添加基于类别的固定费用

在WooCommerce中禁用客户用户角色的纳税计算

使用php创建表格和插入数据

如何在laravel中添加延迟?

根据WooCommerce中的自定义用户元数据值更改用户角色

表单提交返回空白页

在WooCommerce购物车页面应用优惠券不会';t刷新总计

Laravel 在数据库上显示加密列

将自定义保存金额移至 Woocommerce 简单产品中的价格以下

将 WooCommerce 0 销售价格替换为自定义文本,并保留常规价格删除线

在WooCommerce可变产品中显示所选变体的自定义字段

Xdebug 不会在断点处停止

Laravel Websockets 错误:(WebSocket 在建立连接之前关闭)

php-http/discovery 插件 1.15.1 是否仍在使用自己的模块 destruct Contao 4.13 中的composer 安装?

在全局安装 Composer 包后运行命令

Symfony 在将它传递给 Twig 时是否从数据库中获取整个对象?

从 d-m-Y 日期格式 laravel 计算月份 = 01 的列的总和