假设我有一个日期时间对象2015-12-31T12:59
。有没有一种方法可以在PHP中查找当前日期时间与上述日期 - 时间对象之间的差异?基本上,有没有办法从这个时刻到未来的日期 - 时间对象指定的日期时间内以秒为单位找出时间?在PHP中查找日期时间对象与当前时间(以秒为单位)之间的差异
我做了一些挖掘,发现在PHP中有DateTime
类,但我不确定它是否采用2015-12-31T12:59
这样的格式作为输入。
假设我有一个日期时间对象2015-12-31T12:59
。有没有一种方法可以在PHP中查找当前日期时间与上述日期 - 时间对象之间的差异?基本上,有没有办法从这个时刻到未来的日期 - 时间对象指定的日期时间内以秒为单位找出时间?在PHP中查找日期时间对象与当前时间(以秒为单位)之间的差异
我做了一些挖掘,发现在PHP中有DateTime
类,但我不确定它是否采用2015-12-31T12:59
这样的格式作为输入。
您可以使用date()函数将日期转换为自Unix时代以来的秒数,然后您可以减去自Unix时代。
$myDate = date('2015-12-31T12:59'); //convert your date in seconds
$now = time(); //convert now in seconds
$numberOfSeconds = $myDate - $now; //make the difference
注: Unix纪元= 1970年1月1日00:00:00 GMT
Unix系统上的日期可以以Epoch格式存储(例如1970-01-01 00:00:00之间的秒数)。
的时间()功能做到这一点自然和其他日期可以像的strtotime()转换。所有你需要做的就是减去一个从对方获得秒的时间差
,你可以尝试使用这种方式这一结果会给以秒为单位的不同,分,小时,天...
//use this way-----------------------
$c_time=//your current time
$date_current_time = date('Y-m-d H:i:s');
$datetime1 = new DateTime($c_time);
$datetime2 = new DateTime($date_current_time);
$difference = $datetime1->diff($datetime2);
$f6=$difference->y.' Y ';
$f5=$difference->m.' M';
$f4=$difference->d.' D';
$f3=$difference->h.' hr';
$f2=$difference->i.' min';
$f1=$difference->s.' sec';
if($f2==0 && $f3==0 && $f4==0 && $f5==0 && $f6==0)
{
if($f1<=20)
{
$time=" few sec ago";
}
else if($f1>20)
{
$time=$f1." ago";
}
}
else if($f3==0 && $f4==0 && $f5==0 && $f6==0)
{
if($f2<=2)
{
$time=" few min ago";
}
else if($f2>2)
{
$time=$f2." ago";
}
}
else if($f4==0 && $f5==0 && $f6==0)
{
$time=$f3." ago";
}
else if($f5==0 && $f6==0)
{
$time=$f4." ago";
}
else if($f6==0)
{
$time=$f5." ago";
}
else
{
$time=$f6." ago";
}
可能这将有助于...获得时间差异
我不完全相信你如何建立一个像'2015-12-31T12一个DateTime对象:59',但你可以简单地在T字符上“爆炸”它,并重建一个正常的DateTime字符串作为DateTime类的输入。 – icecub
@icecub我从HTML中的输入类型'datetime-local'中获得了上述格式的日期时间对象。 –
我明白了。你知道'datetime-local'在IE或Firefox中不起作用吗?它在Chrome中运行正常。尽管如此,除非你100%确定所有的用户都会使用Chrome浏览器(而且你几乎从未使用过Chrome浏览器!),但我不会依赖于此来获取日期时间对象。 – icecub