如何在PHP中提取一周中的哪一天?

时间:2015-04-08 23:10:24

标签: php datetime strtotime

我是编程新手,并尝试开发依赖于星期几的IF,ELSE语句以及中央时区的当前时间。

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

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

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

我的应用程序是在工作时间之前发生操作,如果在工作时间之后发生第二个操作,则对于每周工作五天的企业。

提前谢谢你。

4 个答案:

答案 0 :(得分:1)

您可以使用日期(“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")];
?>

答案 1 :(得分:0)

php的date()将以“l”

返回星期几
date_default_timezone_set('UTC');
echo date("l");

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

答案 2 :(得分:0)

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

所有这一切都是创建三个DateTime对象。一个代表“现在”。一个代表今天上午10点,一个代表今天晚上10点。然后检查“现在”是否在开放时间之后和关闭时间之前。它可以很容易地做到这一点,因为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
}

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

$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
}

答案 3 :(得分:0)

你真的需要看看date function

对于初学者,请使用类似date("l")的内容来获取星期几,然后选中timezone功能以设置中心时区。