获取最近的日期并计算时差

时间:2015-03-30 19:26:27

标签: php date

我有一个表单,通过javascript将vars传递给外部php文件来处理它。

一个变量是例如:30.03.2015 11:14

需要将该特定变量与其他四个日期进行比较:

1:3月31日 2:6月30日 3:9月30日 4:12月31日

当然年份可以改变,因此四个日期不包括一年,并且需要忽略传递的变量中的年份以及小时和分钟。

我需要知道这四个日期中哪一个最接近传递的变量,以及过去的变量和字符串中四个日期的最近日期之间的天数。

我该怎么做?提前谢谢。

2 个答案:

答案 0 :(得分:0)

您可以将每个目标日期转换为年中某一天的值(0到365):

$mar = date('z', strtotime('March 31st'));
$jun = date('z', strtotime('June 30th'));
$sep = date('z', strtotime('September 30th'));
$dec = date('z', strtotime('December 31st'));

您可以将传入日期转换为相同的格式:

$date = '30.03.2015 11:14';
$day = date('z', strtotime($date));

您可以轻松计算每个目标日期之间的天数:

$mar_days = abs($day-$mar);

为每个目标日期执行此操作,将为每个目标日期提供“目标天数”。从那里,您可以决定您想要做什么。您可以决定只想“最接近而不经过”。你的问题含糊不清。

答案 1 :(得分:0)

感谢@kainaw,我得到了答案。稍微适应我的情况只是为了使用正值:

$mar = date('z', strtotime('March 31st'));
$jun = date('z', strtotime('June 30th'));
$sep = date('z', strtotime('September 30th'));
$dec = date('z', strtotime('December 31st'));
$date = '01.07.2015 11:14';
$day = date('z', strtotime($date));
$mar_days = $mar-$day;
$jun_days = $jun-$day;
$sep_days = $sep-$day;
$dec_days = $dec-$day;
$values = array($mar_days,$jun_days,$sep_days,$dec_days);
$values = array_filter($values, function($v) { return $v >= 0; });
$days = min($values);
echo $days;