-
Notifications
You must be signed in to change notification settings - Fork 0
DateTool
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
| 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. |
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 |
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
}- 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>- Calcul d'ancienneté
$inscription = '2020-01-01';
$interval = DateTool::diff($inscription, 'now');
echo "Inscrit depuis " . $interval->y . " ans et " . $interval->m . " mois.";