查找日期的日期范围

时间:2015-07-16 11:20:35

标签: php mysql date date-range

您如何解决以下问题?

在特定日期,我想找到一个学年的范围。学年始终从9月1日开始,一直持续到8月的最后一年。因此,对于今天(2015-07-16)我希望该函数返回日期2014-09-01和2015-08-31。如果我在三个月内(2015-10-16)运行同样的功能,我希望得到2015-09-01和2016-08-31。

谢谢,

/托马斯

- @ anant-kumar-singh要求的编辑 -

PHP中的示例函数:

function getAcademicYear($date) {
    // Logic code...
    return array($dateStart, $dateEnd);
}

调用getAcademicYear('2015-07-16');应该返回数组['2014-09-01','2015-08-31']

并致电getAcademicYear('2015-10-16'); 应该返回数组['2015-09-01','2016-08-31']

- 编辑 -

function findAcademicYear($date) {
    $dateTime = new DateTime($date);
    $dateTime->sub(new DateInterval("P8M"));
    return(array(
        "startDate" => date("Y-m-d", strtotime($dateTime->format("Y")."-08-31 + 1 day")),
        "endDate" => ($dateTime->format("Y") + 1)."-08-31")
        );
}

1 个答案:

答案 0 :(得分:2)

我会使用以下逻辑:从日期减去8个月,提取年份,并将其用于年度规范:

select date(concat(year(date_sub(date, interval 8 month)), '-09-01')) as academic_start,
       date(concat(1 + year(date_sub(date, interval 8 month)), '-08-31')) as academic_end