2015-07-16 1 views
0

Comment souhaitez-vous résoudre le problème ci-dessous?Trouver une plage de dates à partir d'une date

À une date donnée, j'aimerais trouver l'intervalle d'une année universitaire. Les années académiques commencent toujours le premier septembre et durent jusqu'au dernier août. Ainsi, pour aujourd'hui (2015-07-16) j'aimerais que la fonction renvoie les dates 2014-09-01 et 2015-08-31. Si je devais exercer la même fonction dans trois mois (2015-10-16), j'aimerais que les rapports 2015-09-01 et 2016-08-31 soient retournés.

Merci,

/Thomas

- modifier la demande @ Anant-kumar-singh -

Un exemple de fonction en PHP:

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

Appel getAcademicYear('2015-07-16'); devrait retourner le tableau, ['2014-09-01','2015-08-31']

et appelant getAcademicYear('2015-10-16'); doit retourner le tableau, ['2015-09-01','2016-08-31']

- modifier -

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") 
     ); 
} 
+0

vous êtes capable de comprendre votre question mais nous pas. élaborer en donnant quelques exemples et résultats attendus. –

Répondre

2

j'utiliser la logique suivante: Soustraire 8 mois à compter de la date, extraire l'année, et l'utiliser pour la spécification de l'année:

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 
+0

Bonne idée @GordonLinoff, mais si la date est en septembre, le résultat sera 1 an (2015-09-16 renvoie academic_start: 2014-09-01, academic_end: 2015-08-31 au lieu de academic_start: 2015-09- 01, academic_end: 2016-08-31). Je vais créer la fonction en PHP quand tout fonctionnera. – Thomas

+1

@Thomas pour être correct, vous devez soustraire 8 mois, pas 9 – Rimas

+0

Merci, accepté comme solution! - J'ai ajouté la fonction PHP dans ma question. – Thomas