Php 检查24小时内的时差

Php 检查24小时内的时差,php,datetime,Php,Datetime,在php中,我以这种格式获取变量$date\u time--11-01-2010 20:48:25。这次是格林尼治时间。我有2小时的灵活性,如果超过2小时,我就不得不拒绝。我设置为EST,但我只想基于GMT进行检查,以便时差中没有错误。如何在php代码中设置为GMT,如何检查2小时的灵活时差?与此示例类似,在11-01-2010 18:48:25和11-01-2010 22:48:25之间的任何时间都可以接受。如果$date\u时间是11-01-2010 23:48:23,也会有问题吗 澄清 我

在php中,我以这种格式获取变量$date\u time--
11-01-2010 20:48:25
。这次是格林尼治时间。我有2小时的灵活性,如果超过2小时,我就不得不拒绝。我设置为EST,但我只想基于GMT进行检查,以便时差中没有错误。如何在php代码中设置为GMT,如何检查2小时的灵活时差?与此示例类似,在
11-01-2010 18:48:25
11-01-2010 22:48:25
之间的任何时间都可以接受。如果$date\u时间是
11-01-2010 23:48:23
,也会有问题吗

澄清


我正在做一个
$date\u time=$\u GET['date\u time']。然后我需要检查这个新的$date\u时间是否在当前GMT时间的2小时范围内。如果它在范围内,那么我将继续执行该代码,否则我将显示错误或执行其他操作。我想知道如何检查$date\u时间变量的2小时范围。

如果在PHP>5.3上运行,可以使用DateTime:

$my_date = "11-01-2010 20:48:25";

$date = DateTime::createFromFormat('m-d-Y H:i:s', $my_date);
$date_lower = DateTime::createFromFormat('m-d-Y H:i:s', $my_date);
$date_upper = DateTime::createFromFormat('m-d-Y H:i:s', $my_date);
$date_lower->sub(new DateInterval('PT2H'));
$date_upper->add(new DateInterval('PT2H'));

var_dump($date >= $date_lower && $date <= $date_upper); // bool(true)
$my_date=“11-01-2010 20:48:25”;
$date=DateTime::createFromFormat('m-d-Y H:i:s',$my_date);
$date\u lower=DateTime::createFromFormat('m-d-Y H:i:s',$my\u date);
$date\u upper=DateTime::createFromFormat('m-d-Y H:i:s',$my\u date);
$date_lower->sub(新的日期间隔('PT2H');
$date_upper->add(新的日期间隔('PT2H');

var\u dump($date>=$date\u lower&&$date如果在PHP>5.3上运行,则可以使用DateTime:

$my_date = "11-01-2010 20:48:25";

$date = DateTime::createFromFormat('m-d-Y H:i:s', $my_date);
$date_lower = DateTime::createFromFormat('m-d-Y H:i:s', $my_date);
$date_upper = DateTime::createFromFormat('m-d-Y H:i:s', $my_date);
$date_lower->sub(new DateInterval('PT2H'));
$date_upper->add(new DateInterval('PT2H'));

var_dump($date >= $date_lower && $date <= $date_upper); // bool(true)
$my_date=“11-01-2010 20:48:25”;
$date=DateTime::createFromFormat('m-d-Y H:i:s',$my_date);
$date\u lower=DateTime::createFromFormat('m-d-Y H:i:s',$my\u date);
$date\u upper=DateTime::createFromFormat('m-d-Y H:i:s',$my\u date);
$date_lower->sub(新的日期间隔('PT2H');
$date_upper->add(新的日期间隔('PT2H');
var_dump($date>=$date\u lower&&$date如果PHP>=5.3(顺便说一句,您的格式非常奇怪):

如果PHP>=5.3(顺便说一句,您的格式非常奇怪):


以下是如何将时间格式转换为:

$date=strtime($date\u time,“%m-%d-%Y%T”);
$ut=mktime($date['tm_hour']、$date['tm_min']、$date['tm_sec']、1+$date['tm_mon']、$date['tm_mday']、1900+$date['tm_year']);
$now=时间();

如果($ut>=$now&&$ut,以下是如何将时间格式转换为:

$date=strtime($date\u time,“%m-%d-%Y%T”);
$ut=mktime($date['tm_hour']、$date['tm_min']、$date['tm_sec']、1+$date['tm_mon']、$date['tm_mday']、1900+$date['tm_year']);
$now=时间();

如果($ut>=$now&&$ut我建议您永远不要用格式字符串传递时间和日期。稍后再转换它。您只需将时间戳作为get变量传递,然后在脚本中格式化它。 这是最好的解决方案,也是最干净的

然后使用以下代码:

$flexibility = X seconds;
if ($date_time < time() - $flexibility or $date_time > time() + $flexibility)
{ /*Error*/ }
$flexibility=X秒;
如果($date\u timetime()+$flexibility)
{/*错误*/}

我建议您永远不要用格式字符串传递时间和日期。稍后再转换它。您只需将时间戳作为get变量传递,然后在脚本中格式化它。 这是最好的解决方案,也是最干净的

然后使用以下代码:

$flexibility = X seconds;
if ($date_time < time() - $flexibility or $date_time > time() + $flexibility)
{ /*Error*/ }
$flexibility=X秒;
如果($date\u timetime()+$flexibility)
{/*错误*/}

我真的不明白这个问题。你是要求在时间上增加两个小时吗()?希望我现在说得更清楚。在-mm/dd/yyyy或dd/mm/yyyy中,
11-01-2010
的格式是什么?我真的不明白这个问题。你是要求在时间上增加两个小时吗()?希望我现在说得更清楚些。在-mm/dd/yyyy或dd/mm/yyyy中,
11-01-2010
是什么格式?我使用的是php 5.2.14。我应该提到。谢谢你的努力。我使用的是php 5.2.14。我应该提到。谢谢你的努力。我使用的是php 5.2.14。我应该提到提到了。谢谢你的努力。