繁体   English   中英

检查24小时时差的时间

[英]check time for time difference in 24hr

在PHP中,我以这种格式获取变量$ date_time- 11-01-2010 20:48:25 这是格林尼治标准时间。 我有2个小时的灵活性,如果超过2个小时,则必须拒绝。 我已设置为EST,但我只想根据GMT进行检查,以确保时差没有错误。 如何在我的PHP代码中设置为GMT,如何检查2小时的灵活时差? 像这个例子一样,在11-01-2010 18:48:2511-01-2010 22:48:25之间的任何时间都可以接受。 如果$ date_time是11-01-2010 23:48:23也会是一个问题吗?

澄清

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

这是一种将时间格式转换为UNIX时间戳的方法

$date = strptime($date_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 = time();

if($ut >= $now && $ut <= ($now + 7200)) { // 7200 = 2 * 60 * 60 seconds
    // allowed
}

参考: strptimemktimetime

注意: time()始终以UTC返回UNIX时间戳(与时间设置无关)。 因此,这假设$date_time时间戳 GMT时间。

工作示例 (当然,您必须为$date_time提供有效的GMT时间)。

注意2:如果输入时间不在格林尼治标准时间(GMT)中,则可以使用date_default_timezone_set设置时区(不影响mktime但不影响time )。

工作示例 (相应地更改时间和时区)

如果您在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)

我发现它更具可读性。

如果需要,您还可以使用其他时区,请检查createFromFormat的第三个参数。

如果PHP> = 5.3(您的BTW格式非常奇怪):

date_default_timezone_set('EST');
$inputtime = DateTime::createFromFormat('m-d-Y H:i:s','11-01-2010 20:48:25',new DateTimeZone("GMT"));
$diff = $inputtime->getTimestamp() - time();
if(abs($diff) > 7200){
    //more then 2 hours difference.
}

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

然后使用以下代码:

$flexibility = X seconds;
if ($date_time < time() - $flexibility or $date_time > time() + $flexibility)
{ /*Error*/ }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM