1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97:
<?php
namespace App\Utils;
/**
* Utilitaire pour les dates
*/
class Date
{
/**
* Conversion d'une date au format français vers une date au format anglais
* @param string $maDate Date au format anglais (2017-11-10) à convertir au format français
* @return string Date au format français (10/11/2017)
*/
public static function EngToFr($maDate)
{
@list($annee, $mois, $jour) = explode('-', $maDate);
$date = $jour . '/' . $mois . '/' . $annee;
return $date;
}
/**
* Conversion d'une date au format français vers une date au format anglais
* @param string $maDate Date au format français (10/11/2017) à convertir au format anglais
* @return string Date au format anglais (2017-11-10)
*/
public static function FrToEng($maDate)
{
@list($jour, $mois, $annee) = explode('/', $maDate);
return date('Y-m-d', mktime(0, 0, 0, $mois, $jour, $annee));
}
/**
* Récupèration du mois à partir de l'année (concatené avec l'année en cours)
* @param string $date Date à extraire
* @return string Année suivi du mois (exemple : 201711)
*/
public static function getMois($date)
{
@list($jour, $mois, $annee) = explode('/', $date);
unset($jour);
if (strlen($mois) == 1) {
$mois = '0' . $mois;
}
return $annee . $mois;
}
/**
* Vérification que la date ne soit pas dépassée de un an;
* @param string $date Date à verifier
* @return boolean Si date dépassée de un an = true, sinon false;
* @todo Vérification que la date passée en paramètre ne soit pas supérieure à la date actuellem
*/
public static function outdated($date) {
$dateActuelle = date('d/m/Y');
@list($jour, $mois, $annee) = explode('/', $dateActuelle);
$annee--;
$anPasse = $annee . $mois . $jour;
@list($jourTeste, $moisTeste, $anneeTeste) = explode('/', $date);
return ($anneeTeste . $moisTeste . $jourTeste < $anPasse);
}
/**
* On vérifie que la date soit correctement formatée
* @param string $value Date à verifier
* @return boolean True si date correctement formatée, sinon on renvoie une erreur
*/
static function check($value) {
if (preg_match("/([0-9]{2})\/([0-9]{2})\/([0-9]{4})/", $value, $matches)) {
return true;
} else {
ErrorLogger::add('La valeur '.$value.' n\'est pas le type de donnée attendu (date). Elle doit-être au format dd/mm/yyyy');
}
}
/**
* Fonction de report d'une date (YYYYMM)
* @param mois et année de la fiche de frais $moisAnnee
* @return date reportée sur un mois
*/
static function report($moisAnnee) {
$mois = substr($moisAnnee, 4, 2);
$annee = substr($moisAnnee, 0, 4);
if($mois == '12') {
$annee = $annee + 1;
$mois = '01';
} else {
$mois = $mois + 1;
if ($mois < 10) {
$mois = '0'. $mois;
}
}
return $annee . $mois;
}
}