两个日期之间的日计数

时间:2011-08-28 17:11:16

标签: php mysql

我希望能够计算两个日期之间的天数。

我有一个下拉菜单,选择一天(1-31),一个月(1-12)和一年(2011-2012),然后以1122011(12月1日)的格式发布到数据库2011)。

我想从数据库($ lastpost)获取该变量,该日期将简单地显示为“7102011”(2011年10月7日),并计算变量$ lastpost中日期与“lastpost”之间的天数。现在”。我知道它需要格式化才能使它工作,但我不确定如何做到这一点。

5 个答案:

答案 0 :(得分:1)

我会将每个日期转换为unix时间戳。

http://www.php.net/manual/en/function.mktime.php

然后得到两者之间的差异。结束日期-的startDate

然后只是做一些数学计算从几秒钟开始的日子。

答案 1 :(得分:1)

如果您在MySQL中存储日期,则可以使用内置的DATE type

然后你可以使用内置的DATEDIFF函数:

SELECT DATEDIFF(NOW(), your_date) FROM your_table

为您提供今天和your_date之间的日期。

答案 2 :(得分:0)

我使用此函数来计算从现在到$ fecha之间经过的时间,你可以简单地用$ fecha 2(日期2)而不是$ ahora(现在)添加另一个参数

function hace($fecha){
        //obtener la hora en formato unix
        $ahora=time()-3600;
        $fecha_unix = strtotime($fecha);
       // mostrar_notificacion($fecha_unix);
        //obtener la diferencia de segundos;
        $segundos=$ahora-$fecha_unix+1;

        //dias es la division de n segs entre 86400 segundos que representa un dia;
        $dias=floor($segundos/86400);

        //mod_hora es el sobrante, en horas, de la division de días;
        $mod_hora=$segundos%86400;

        //hora es la division entre el sobrante de horas y 3600 segundos que representa una hora;
        $horas=floor($mod_hora/3600);

        //mod_minuto es el sobrante, en minutos, de la division de horas;
        $mod_minuto=$mod_hora%3600;

        //minuto es la division entre el sobrante y 60 segundos que representa un minuto;
        $minutos=floor($mod_minuto/60)+1;
         // this is only to print the result;
        if($horas<=0){
            if($minutos <= 1){
                return get_texto_clave('hace') ." ".$segundos." ".get_texto_clave('segundos')." " .get_texto_clave('a_go');
            }else{
                return get_texto_clave('hace') ." ".$minutos." ".get_texto_clave('minutes')." " .get_texto_clave('a_go');
            }
        }elseif($dias<=0){
                return get_texto_clave('hace') ." ".$horas." ".get_texto_clave('hours') ." ". get_texto_clave('and') ." ".$minutos." ".get_texto_clave('minutes');
        }else{
                return get_texto_clave('hace') ." ".$dias." ".get_texto_clave('dias');

        }
}

答案 3 :(得分:0)

ISO 8601 notation Wikipedia中的日期通常与YYYY-MM-DD相同,例如 {em> 2011年10月7日。这样的格式结构良好,PHP和MySQL都支持。

这种格式结构合理,并且始终清楚月份结束和白天开始的地方。

在任何情况下,您都应该将日期值保存为DATE Type Docs到MySQL数据库中。

要将输入转换为此类日期字符串,您可以使用sprintfDocs轻松完成:

2011-10-07
然后,MySQL可以将其作为实际日期值读取,并可以根据它进行计算,如Ailyn outlined in his answer

答案 4 :(得分:0)

我设法使用strtotime函数使用简洁的方法来解决它,我不确定我是否能很好地将它显示给你们,但这是我几乎完成的代码。

    $today = strtotime("2011-08-30 00:00:00"); 
    $lastpost2 = strtotime($lastpost); 

    printf("%d", round(abs($today-$lastpost2)/60/60/24));

$今天是当前日期,可能会使用NOW()函数,然后$ lastpost2从数据库中获取日期($ lastpost),然后打印出两个日期之间的确切天数下面。