如何提取 PHP 中的星期几?

How do I pull out the day of the week in PHP?

我是编程新手,正在尝试开发一个依赖星期几和中部时区当前时间的 IF、ELSE 语句。

我在 PHP 中写作,我一直在查看 strtotime,然后尝试以各种方式对其进行格式化,但我并不清楚。有人可以推荐我可以用来整理混乱的指南吗?

我找到了这个,它可能会提供帮助。

$time = strtotime('10:00');
$startTime = date("H:i", strtotime('-30 minutes', $time));
$endTime = date("H:i", strtotime('+30 minutes', $time));

对于每周营业五天的企业,我的应用程序在营业时间之前发生一个动作,在营业时间之后发生第二个动作。

提前谢谢你。

php 的 date() 将 return 星期几 "l"

date_default_timezone_set('UTC');
echo date("l");

http://php.net/manual/en/function.date.phpenter link description here

这是一个使用 DateTime() 的示例,它更适合处理日期,因为它考虑了夏令时和闰年。它还使处理时区变得更加容易。

这只是创建三个 DateTime 对象。一个代表"now"。一位代表今天上午 10 点,一位代表今天晚上 10 点。然后检查 "now" 是否在开始时间之后和关闭时间之前。它可以很容易地做到这一点,因为 DateTime 对象是可比较的(这意味着您不必将日期和时间转换为整数或某种字符串格式来尝试比较它们)。

$now = new DateTime();
$startTime = new DateTime('10:00');
$endTime = new DateTime('22:00');
if ($now < $startTime) {
    // before business hours
}
else if ($now > $endTime) {
    // after business hours
}

要查看星期几,您可以对 DateTime::format() 使用 l 修饰符。然后你可以动态改变打开和关闭时间:

$now = new DateTime();
switch ($now->format('l')) {
    case 'Monday' :
        $open = '10:00';
        $close = '22:00';
        break;
    case 'Tuesday' :
        $open = '9:00';
        $close = '23:00';
        break;
    // etc...
}
$startTime = new DateTime($open);
$endTime = new DateTime($close);
if ($now < $startTime) {
    // before business hours
}
else if ($now > $endTime) {
    // after business hours
}

如果您的服务器不在中央时区,您可以修改代码以使用 DateTimeZone()

$timezone = new DateTimeZone('America/Chicago');
$now = new DateTime(null, $timezone);
switch ($now->format('l')) {
    case 'Monday' :
        $open = '10:00';
        $close = '22:00';
        break;
    case 'Tuesday' :
        $open = '9:00';
        $close = '23:00';
        break;
    // etc...
}
$startTime = new DateTime($open, $timezone);
$endTime = new DateTime($close, $timezone);
if ($now < $startTime) {
    // before business hours
}
else if ($now > $endTime) {
    // after business hours
}

你真的需要看看date function

对于初学者,使用 date("l") 之类的东西来获取星期几,然后检查 timezone 函数来设置中央时区。

您可以使用 date("l") 获取 DOW 的字符串表示,然后使用 DOW 字符串作为数组键创建一个包含营业时间的数组

<?php
$arr = array(
  "Monday" => array(
      "open" => "09:00",
      "close" => "17:00",
  ),
  "Tuesday" => array(
      "open" => "09:00",
      "close" => "17:00",
  ),
  // Wednesday, Thursday....etc.
  "Saturday" => null,
  "Sunday" => null
);

echo $arr[date("l")];
?>