【问题标题】:Show a date depending on day and time根据日期和时间显示日期
【发布时间】:2022-01-03 03:54:43
【问题描述】:

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

但我想在星期三下午 5 点(格林威治标准时间 17:00 + 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; ?>

【问题讨论】:

    标签: php date time


    【解决方案1】:

    给你的一些反馈:

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

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

    【讨论】:

    • 感谢您的回答和解释!
    猜你喜欢
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多