Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 两个日期之间的天数_Php_Mysql - Fatal编程技术网

Php 两个日期之间的天数

Php 两个日期之间的天数,php,mysql,Php,Mysql,我希望能够计算两个日期之间的天数 我有一个下拉菜单,选择一天(1-31)、一个月(1-12)和一年(2011-2012),然后以1122011(2011年12月1日)的格式发布到数据库中 我想从数据库($lastpost)中得到一个日期变量,它将显示为“7102011”(2011年10月7日),并计算变量$lastpost中的日期和“现在”之间的天数。我知道它需要不同的格式才能工作,但我不确定如何做 我会将每个日期转换为unix时间戳 然后得出两者之间的差异。结束日期开始日期 然后做一些数学运

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

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


我想从数据库($lastpost)中得到一个日期变量,它将显示为“7102011”(2011年10月7日),并计算变量$lastpost中的日期和“现在”之间的天数。我知道它需要不同的格式才能工作,但我不确定如何做

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

然后得出两者之间的差异。结束日期开始日期


然后做一些数学运算,从秒数算出天数

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

然后,您可以只使用内置功能:

SELECT DATEDIFF(NOW(), your_date) FROM your_table

为您提供从今天到您的日期之间的天数。

我使用此函数计算从现在到$fecha之间经过的时间,您只需使用$fecha2(日期2)而不是$ahora(现在)添加另一个参数即可

功能hace($fecha){
//格式的时间
$ahora=时间()-3600;
$fecha_unix=strottime($fecha);
//mostrar_Notification($fecha_unix);
//差异的获得者;
$segundos=$ahora-$fecha_unix+1;
//在印度有86400名代表;
$dias=地板($segundos/86400);
//这是一个很好的例子;
$mod_hora=$segudos%86400;
//时间是时间的分界线,代表时间为3600秒;
$horas=地板($mod_horas/3600);
//每分钟一次,每分钟一次,每小时一次;
$mod_minuto=$mod_hora%3600;
//在sobrante的分区中,每分钟有60个代表;
$minutos=地板($mod_minuto/60)+1;
//这只是为了打印结果;

如果($horas通常会在诸如
YYYY-MM-DD
中包含日期,例如2011年10月7日的
2011-10-07
。这种格式结构良好,PHP和MySQL都支持

这种格式结构良好,月底和日初总是清晰可见

在任何情况下,都应该将日期值另存为MySQL数据库

要将您的输入转换为这样的日期字符串,您可以轻松使用:


MySQL可以读取它作为一个实际的日期值,并可以根据它进行计算,比如。

我使用
strotime
函数用一个简单的方法解决了它,我不确定我是否向大家解释得很好,但这是我几乎完成的代码

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

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

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

我还看到了如何存储日期的问题。该日期存储到3112011年11月3日或1月1日的日期是什么?始终在日期和月份上填充一个0,而不是两位数字。最好将日期存储为unix时间戳。这样就很容易在日期和时间戳之间进行排序从数据库中选择大于或小于某个日期。我使用一个下拉框供用户选择日期,日期的值为1到31,月份为1到12,年份为2011年和2012年。它们只是以这种方式“组合”到变量$lastpost。因此,如果我要回显$lastpo,则2011年12月1日显示为1122011年st@Craig以机器友好的格式存储它们,比如UNIX时间戳或原生MySQL日期格式。从长远来看,您会发现这会更好。
$day = '7';
$month = '10';
$year = '2011';

$iso = sprintf('%02d-%02d-%04d', $day, $month, $year);

echo $iso; # 07-10-2011
    $today = strtotime("2011-08-30 00:00:00"); 
    $lastpost2 = strtotime($lastpost); 

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