我有一个表单,通过javascript传递vars到外部php文件来处理它 .
一个变量是例如:30.03.2015 11:14
需要将该特定变量与其他四个日期进行比较:
1:3月31日2:6月30日3:9月30日4:12月31日
当然年份可以改变,因此四个日期不包括一年,并且需要忽略传递的变量中的年份以及小时和分钟 .
我需要知道这四个日期中哪一个最接近传递的变量,以及过去的变量和字符串中四个日期的最近日期之间的天数 .
我该怎么做呢?提前致谢 .
您可以将每个目标日期转换为一年中的某一天值(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);
对每个目标日期执行此操作将为每个目标日期提供“目标日期” . 从那里,您可以决定您想要做什么 . 您可以决定只想“最接近而不经过” . 你的问题有很多含糊不清的地方 .
感谢@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;
2 回答
您可以将每个目标日期转换为一年中的某一天值(0到365):
您可以将传入日期转换为相同的格式:
您可以轻松计算每个目标日期之间的天数:
对每个目标日期执行此操作将为每个目标日期提供“目标日期” . 从那里,您可以决定您想要做什么 . 您可以决定只想“最接近而不经过” . 你的问题有很多含糊不清的地方 .
感谢@kainaw,我得到了答案 . 略微适应我的情况只使用正值: