Skip to content
Gérits Aurélien edited this page Feb 13, 2026 · 2 revisions

La classe DateTool est l'utilitaire de référence pour la gestion du temps dans Magepattern. Elle unifie les formats de date à travers l'application, assurant une conversion fluide entre les saisies utilisateur (format européen), le stockage (SQL) et les standards web (W3C/RFC). Elle repose sur DateTimeImmutable pour garantir la stabilité des objets.

Namespace : Magepattern\Component\Tool\DateTool


📚 Liste des méthodes

Méthode Paramètres Retour Description
getDate() int|string $time, string $fmt string Formate un timestamp ou une chaîne vers un format standard ou personnalisé.
toSql() string $date, string $from string|bool Convertit une date (ex: EU) vers le format SQL Y-m-d.
toSqlDateTime() string $date, string $from string|bool Convertit une date vers le format SQL Y-m-d H:i:s.
toW3C() int|string $time string Génère une date au format ISO 8601 (requis pour Sitemaps XML).
validateFormat() string $date, string $fmt bool Vérifie strictement si une chaîne respecte un format donné.
isValid() int $y, int $m, int $d bool Vérifie l'existence calendaire d'une date (wrapper checkdate).
diff() string $d1, string $d2 DateInterval Calcule la durée entre deux dates.
findTimeZone() int $offset DateTimeZone Trouve l'objet TimeZone correspondant à un décalage en secondes.

🛠️ Constantes de format

Ces constantes doivent être utilisées pour éviter les erreurs de formatage manuelles.

Constante Valeur Exemple Usage
EU_FORMAT d/m/Y 05/02/2026 Affichage utilisateur (FR/BE)
EU_DATETIME d/m/Y H:i:s 05/02/2026 14:30:00 Affichage détaillé
SQL_FORMAT Y-m-d 2026-02-05 Colonne MySQL DATE
SQL_DATETIME Y-m-d H:i:s 2026-02-05 14:30:00 Colonne MySQL DATETIME
W3C_FORMAT Y-m-d\TH:i:sP 2026-02-05T14:30... Google Sitemap, RSS

💡 Exemples concrets

1. Conversion avant insertion SQL

Pour sécuriser vos insertions en base de données, convertissez toujours les saisies utilisateur.

use Magepattern\Component\Tool\DateTool;

$userInput = "25/12/2026"; // Saisie formulaire

// Conversion explicite
$sqlDate = DateTool::toSql($userInput, DateTool::EU_FORMAT);

if ($sqlDate) {
    // $sqlDate vaut "2026-12-25" -> Prêt pour MySQL
    $db->query("INSERT INTO users (birth_date) VALUES (?)", [$sqlDate]);
} else {
    // Erreur de format
}
  1. Génération de Sitemap XML (SEO)
// Génère la date actuelle au format strict W3C
$lastMod = DateTool::toW3C('now'); 

echo "<lastmod>$lastMod</lastmod>";
// Résultat : <lastmod>2026-02-13T15:30:00+01:00</lastmod>
  1. Calcul d'ancienneté
$inscription = '2020-01-01';
$interval = DateTool::diff($inscription, 'now');

echo "Inscrit depuis " . $interval->y . " ans et " . $interval->m . " mois.";

Clone this wiki locally