【问题标题】:Need to display content only during business hours只需要在工作时间显示内容
【发布时间】:2014-06-12 23:15:58
【问题描述】:

我需要在中部时间上午 9 点到下午 6 点之间显示内容。我已经尝试了各种方法来使用 php 执行此操作,但结果永远都不准确。我试过的一个例子是:

<?
$openTime = strtotime(date('Y-m-d').' 09:00:00');
$closeTime = strtotime(date('Y-m-d').' 18:00:00');
$currTime = strtotime('now');

if (($openTime <= $currTime) && ($currTime <= $closeTime)) { ?>

但这与我们服务器的时间相差甚远。我们的服务器应该位于美国中部时区,但同样,上面的代码不起作用。

那么有没有一种方法可以在指定时区的同时指定小时数以使其正常工作?由于上面的代码不能正常工作,看起来 php 使用的时区与我们服务器的时区不同。我想要的只是在中部时间上午 9 点到下午 6 点之间显示内容。我觉得我错过了一些明显的东西。谢谢!

【问题讨论】:

  • 如果你使用DateTime class,你可以在运行时设置时区,独立于服务器配置。
  • 这听起来像我需要的。我也很抱歉,但我是一个完整的 php 新手。我将如何在上述代码中应用该类?
  • 查看@Fabricator 的回答

标签: php date time timezone


【解决方案1】:

使用Datetime('now', timezone)获取当前时间

$curdate = new Datetime('now', new Datetimezone('America/Chicago'));

使用setTime 设置小时和分钟

$openTime = clone $curdate;
$openTime->setTime(9,0);

$endTime = clone $curdate;
$endTime->setTime(18,0);

【讨论】:

  • +1。这确实是正确的方法。我认为最好提到 DateTime 对象是可比较的。对于不熟悉使用 DateTime 对象的人来说,这可能并不明显:)
【解决方案2】:

使用以下方式设置您的时区:

date_default_timezone_set('Your time zone') 

这里的可用时区:Acceptable timezones

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 2014-08-23
    相关资源
    最近更新 更多