我有一个表单,通过javascript将vars传递给外部php文件来处理它。
一个变量是例如:30.03.2015 11:14
需要将该特定变量与其他四个日期进行比较:
1:3月31日 2:6月30日 3:9月30日 4:12月31日
当然年份可以改变,因此四个日期不包括一年,并且需要忽略传递的变量中的年份以及小时和分钟。
我需要知道这四个日期中哪一个最接近传递的变量,以及过去的变量和字符串中四个日期的最近日期之间的天数。
我该怎么做?提前谢谢。
答案 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;