根据日期和时间显示日期

Show a date depending on day and time

我有这个脚本回显即将到来的星期四,除非它是星期三,因为它会显示一周后的星期四。这很好用。

但我想在周三下午 5 点(17:00 GMT+1 / CEST)添加截止时间。因此,在下午 5 点之前,它仍会在下周四(后天)显示,但在下午 5 点之后,它应该在下周周四显示。我似乎无法弄清楚如何添加它,希望有人知道解决方案!

<?
$date = new DateTime();
if(date('D') == 'Tue' || date('D') == 'Wed') {
$date->modify('thursday next week');
} else {
$date->modify('next thursday');
}
$delivery_date = $date->format('d-m-Y');
?>

<?php echo $delivery_date; ?>

给你的一些反馈:

  • 你的问题是“除非是星期三”,但你的代码说除非是星期二或星期三
  • 您使用 DateTime() 创建了 $date,这很好,但是您没有在 if 语句中使用它。 if 语句中的每个 date('D') 调用都使用单独的时间。时间将非常接近,但您应该使用检查日期时创建的 $date,例如$date->format('D') === 'Wed'
  • 您的代码将根据服务器的时区运行。如果您需要处理其他时区,则需要通过将 DateTimeZone 对象传递给 DateTime 构造函数来指定,例如$date = new DateTime( 'now', $dateTimeZoneObj );,或在您的代码前手动设置时区。

解决您的问题的一种方法是将下午 5 点的支票添加到您的每周支票中,例如: if( $date->format('D') === 'Wed' && (int)$date->format('G') >= 17 )