2017-02-14 113 views
0

IM有关于检查当前时间提交时间有点问题PHP检查当前时间

date_default_timezone_set('Asia/Hong_Kong'); 
$date = date('Y-m-d H:i:s'); 

我想给它这样

if(isset($_POST['submit']) { 


if (date (H)< 1pm) { 
/* get the time difference or */ echo " you're late $late "; 
// do something } 
else if (date (H) < 4pm) { 
/get the time difference or */ echo " you're late $late "; 
// do something } 
else if (date (H) < 7pm { 
/* get the time difference or */echo " you're late $late "; 
// do something } 
} 

但我不知道如何计算$late$late是要知道提交时间有多少小时/分钟

+0

我应该'$ late'是什么?他们迟到多少小时/分钟? – Qirel

+0

是的,先生,虐待现在编辑 – JustAngelo

+0

我想这些是间隔(下午1点,下午4点,晚上7点),但是当用户不迟到? – Qirel

回答

0

您可以使用DateTime::createFromFormat()从给定时间创建一个dateobject,并使用new DateTime()进行比较。

$now = new DateTime(); 
if ($now->format("H:i") > "13:00") { 
    $deadline = DateTime::createFromFormat("H:i", "13:00"); 
    $diff = $now->diff($deadline); 
    echo "You are ".$diff->h." hours and ".$diff->i." minutes late"; 
} 

如果您在14:04提交表单,上面的代码将输出

You are 1 hours and 4 minutes late

+0

所以这样? https://jsfiddle.net/tch4q2qy/ – JustAngelo

+0

你为什么不尝试呢? ;-)虽然jsfiddle不起作用,但PHP!= JS – Qirel

+0

当我点击按钮时,没有任何反应,idk为什么 – JustAngelo

0

依赖于您试图展示的内容...我假设您在这里w蚂蚁显示两次(日期时间)之间的差异。你可以这样做:

$datetime1 = new DateTime('2071-02-14 02:28:30'); 
$datetime2 = new DateTime(); 
$interval = $datetime1->diff($datetime2); 

echo "\ndate1: " . $datetime1->format('Y-m-d H:i:s'); 
echo "\ndate2: " . $datetime2->format('Y-m-d H:i:s'); 
echo "\ndiff: " . $interval->format('%R%H hours'); 

检查出documentation为格式化区间输出。

如果你想

只显示了基于当请求提交,你可以简单地使用

$datetime = new DateTime(); 
$hours = $datetime->format('H'); 

,然后使用$小时变量来决定做什么的时候。希望有所帮助。 关于DateTime类的更多文档。

+0

我想用我的时区显示当前时间的时间,但是当我点击提交按钮时,它会显示迟到的例子我在1:05点击它,然后显示你晚了00:05:00类似 – JustAngelo

+0

,我也需要显示你的代码只显示时间 – JustAngelo

+0

@JustAngelo你知道我给你一个链接的所有参数格式间隔... $ interval-> format('%H:%I:%S');为你的情况,你在评论中描述,但在你原来的问题中没有提到 – flynorc

相关问题