我希望仅在上午7:00 美国时间的某个时间包含脚本,并在下午1:00 时关闭。
这就是我所拥有的:
date_default_timezone_set( 'America/New_York' );
$time = date( 'H' ); ?>
<script>console.log('<?php echo $time; ?>');</script>
<?php if($time >= 07 && $time <= 01) : ?>
<script>alert("That works!");</script>
endif;
我知道我首先要尝试比较更多的数字,但不了解我需要做什么。
24格式也不起作用。
谢谢!
答案 0 :(得分:2)
试试这个
<?php
date_default_timezone_set( 'America/New_York' );
$current_time = date('H:i a');
$US1 = "7:00AM";
$US2 = "1:00PM";
$date1 = DateTime::createFromFormat('H:i a', $current_time);
$date2 = DateTime::createFromFormat('H:i a', $US1);
$date3 = DateTime::createFromFormat('H:i a', $US2);
if ($date1 > $date2 && $date1 < $date3)
{
echo '<script type="text/javascript" src="/js/livechat.js"></script>';
}
?>
答案 1 :(得分:1)
当您在date()
中使用H时,这会给出小时的24小时格式,因此您的测试应该是针对7&amp; 13 ...
<?php if($time >= 7 && $time <= 13) : ?>
答案 2 :(得分:1)
你需要使用不带前导零的时间:
<?php
date_default_timezone_set('America/New_York');
$hour = (new DateTime())->format('G');
?>
<script>console.log('<?php echo $time; ?>');</script>
<?php if ($hour >= 7 && $hour <= 13): ?>
<script>alert("That works!");</script>
<?php endif; ?>
答案 3 :(得分:1)
这可以通过时间戳比较来完成:
date_default_timezone_set( 'America/New_York' );
if (strtotime(date('H:i')) >= strtotime('7:00') &&
strtotime(date('H:i')) <= strtotime('13:00')) { /* do stuff */ }
要到下午1点,你应该使用军事时间......这是13点钟。
我建议这样做,而不是仅仅比较几小时,因为如果你想在未来指定一个不同的时间,它会非常灵活。