首页 文章

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

提问于
浏览
-1

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

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

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

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

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

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

我该怎么做呢?提前致谢 .

2 回答

  • 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);
    

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

  • 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;
    

相关问题