php时间差(天时分)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php时间差(天时分)相关的知识,希望对你有一定的参考价值。

我头都晕惨了, 怎么样一个时间减别一个时间,得到时

如:当时间 2005-10-12 20:02:40 到 2010-10-03 20:02:40 得到 多少天多少小时多少分 用php

注意在PHP中写进行时间的运算都是将时间转化为时间戳进行运算!
时间戳是当前时间距离1970年01月01日 00:00:00的秒数,在PHP中用
strtotime()函数将其时间转化为时间戳

用法如下:
strtotime($date)
功能:将任何英文文本的日期时间描述解析为 Unix 时间戳,也可以是2010-01-01 12:21:22这种形式
参数:要转化的时期
返回值:整型值

如果是想得到当前时间的时间戳可以用time()
想要获得某个时间戳的时间可以用date(),该函数默认当前时间的戳!

date("Y-m-d H:i:s",$stamptime)

功能:格式化一个本地时间/日期
参数:第一个是时间格式字符串(上面是一个例子,还有许多的格式字符),第二个是时间戳
返回值:时间字符串

好了,应该够用!

祝你成功!
参考技术A 把它转换为时间戳后,就很好计算了.
$one = strtotime('2005-10-12 20:02:40');
$tow = strtotime('2010-10-03 20:02:40');
$cle = $tow - $one; //得出时间戳差值

/* 这个只是提示
echo ceil($cle/60); //得出一共多少分钟
echo ceil($cle/3600); //得出一共多少小时
echo ceil($cle/3600/24); //得出一共多少天
*/

$d = cell($cle/3600/24);
$h = cell(($cle%(3600*24))/3600);
$m = cell(($cle%(3600*24))/60);

echo "两个时间相差 $d 天 $h 小时 $m 分";
参考技术B 最简单的办法是全部转换为秒,然后进行计算的。
请用 mktime 函数,具体说明可以在google上查,不复杂的。
参考技术C 楼上说的很对的啊

使用python实现将秒转化为天时分

在计算时间差的时候,比较容易得到timedelta这样的格式

比如:

>>> import datetime
>>> datetime.datetime.now()-datetime.datetime(2021,1,1)
datetime.timedelta(days=150, seconds=40790, microseconds=833309)
>>> a = datetime.datetime.now()-datetime.datetime(2021,1,1)
>>> a
datetime.timedelta(days=150, seconds=40806, microseconds=749774)
>>> str(a)
'150 days, 11:20:06.749774'
>>> a.days
150
>>> a.seconds
40806
>>> 

这里如果仅仅是输出天数,就很容易得到,但是具体一点的信息显示的不是很友好

因此可以先利用函数将其全部转化为秒,然后再计算

>>> (datetime.datetime.now()-datetime.datetime(2021,1,1)).total_seconds()
13000936.085446

然后利用下面的函数就能转化为具体花费的多少时间

 

def seconds_to_dhms(seconds):
    def _days(day):
        return " days, ".format(day) if day > 1 else " day, ".format(day)
    def _hours(hour):  
        return " hours, ".format(hour) if hour > 1 else " hour, ".format(hour)
    def _minutes(minute):
        return " minutes and ".format(minute) if minute > 1 else " minute and ".format(minute)
    def _seconds(second):  
        return " seconds".format(second) if second > 1 else " second".format(second)          
    days = seconds // (3600 * 24)
    hours = (seconds // 3600) % 24
    minutes = (seconds // 60) % 60
    seconds = seconds % 60
    if days > 0 :
        return _days(days)+_hours(hours)+_minutes(minutes)+_seconds(seconds)
    if hours > 0 :
        return _hours(hours)+_minutes(minutes)+_seconds(seconds)
    if minutes > 0 :
        return _minutes(minutes)+_seconds(seconds)
    return _seconds(seconds)

举个例子:

> seconds_to_dhms(a)
'1 day, 0 hour, 1 minute and 2 seconds'
>>> a = 24*60*60*45 + 60*13+59 
>>> seconds_to_dhms(a)
'45 days, 0 hour, 13 minutes and 59 seconds'
>>> a = 24*60*60*45 + 60*13+59 +60*34
>>> seconds_to_dhms(a)
'45 days, 0 hour, 47 minutes and 59 seconds'
>>> a = 24*60*60*45 + 60*13+59 +60*60*34
>>> seconds_to_dhms(a)
'46 days, 10 hours, 13 minutes and 59 seconds'
>>> a = 24*60*60*45 + 60*13+59 +60*60*14
>>> seconds_to_dhms(a)
'45 days, 14 hours, 13 minutes and 59 seconds'

这样单复数都有了,如果是中文显示,就更简单一点了,直接在最后格式化输出就好了,不用再定义里面的四个小函数了

以上是关于php时间差(天时分)的主要内容,如果未能解决你的问题,请参考以下文章

使用python实现将秒转化为天时分

使用python实现将秒转化为天时分

PHP函数gmstrftime()将秒数转换成天时分秒

PHP,MySQL链接问题,困扰了两天时间,请教各位大侠

php时间戳

php获取时间计算时间差