我希望能够计算两个日期之间的天数。
我有一个下拉菜单,选择一天(1-31),一个月(1-12)和一年(2011-2012),然后以1122011(12月1日)的格式发布到数据库2011)。
我想从数据库($ lastpost)获取该变量,该日期将简单地显示为“7102011”(2011年10月7日),并计算变量$ lastpost中日期与“lastpost”之间的天数。现在”。我知道它需要格式化才能使它工作,但我不确定如何做到这一点。
答案 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数据库中。
要将输入转换为此类日期字符串,您可以使用sprintf
Docs轻松完成:
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),然后打印出两个日期之间的确切天数下面。