## Formats relatifs

Cette page décrit les différents formats relatifs que les analyseurs des fonctions strtotime(), DateTime et date_create() comprennent.

Symboles utilisés
Description | Format
--- | ---
dayname | 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat'
daytext | 'weekday' | 'weekdays'
number | [+-]?[0-9]+
ordinal | 'first' | 'second' | 'third' | 'fourth' | 'fifth' | 'sixth' | 'seventh' | 'eighth' | 'ninth' | 'tenth' | 'eleventh' | 'twelfth' | 'next' | 'last' | 'previous' | 'this'
reltext | 'next' | 'last' | 'previous' | 'this'
space | [ \t]+
unit | (('sec' | 'second' | 'min' | 'minute' | 'hour' | 'day' | 'fortnight' | 'forthnight' | 'month' | 'year') 's'?) | 'weeks' | daytext

Notations basées sur le jour
Format | Description | Exemples
--- | --- | ---
'yesterday' | Minuit d'hier | "yesterday 14:00"
'midnight' | Le temps est affecté à 00:00:00 |
'today' | Le temps est affecté à 00:00:00 |
'now' | Maintenant |
'noon' | Le temps est affecté à 12:00:00 | "yesterday noon"
'tomorrow' | Minuit de demain |
'back of' hour | 15 minutes avant l'heure précisée | "back of 7pm", "back of 15"
'front of' hour | 15 minutes après l'heure spécifiée | "front of 5am", "front of 23"
'first day of'? | Affecte le jour du premier jour du mois courant. Il est plus intéréssant d'utiliser cette phrase suivie d'un nom de mois. | "first day of January 2008"
'last day of'? | Affecte le jour du dernier jour du mois courant. Il est plus intéréssant d'utiliser cette phrase suivie d'un nom de mois. | "last day of next month"
ordinal space dayname space 'of' | Calcule le x-ème jour de semaine du mois en cours. | "first sat of July 2008"
'last' space dayname space 'of' | Calcule le dernier jour de semaine du mois en cours. | "last sat of July 2008"
number space? (unit | 'week') | Gère des temps relatifs dont la valeur est dénombrée. | "+5 weeks", "12 day", "-7 weekdays"
ordinal space unit | Gère des temps relatifs dont la valeur est dénombrée. | "fifth day", "second month"
'ago' | Utilise dans le passé toute description de temps relatif ('il y a'). | "2 days ago", "8 days ago 14:00", "2 months 5 days ago", "2 months ago 5 days", "2 days ago"
dayname | Se déplace vers le prochain jour indiqué. | "Monday"
reltext space 'week' | Gère le format spécial "weekday + last/this/next week". | "Monday next week"

> Note:

> Les expressions relatives sont toujours traitées après les expressions non relatives. Ceci fait en sorte que "+1 week july 2008" et "july 2008 +1 week" sont équivalents.

> "yesterday", "midnight", "today", "noon" et "tomorrow" sont des exceptions à cette règle. Notez que "tomorrow 11:00" et "11:00 tomorrow" sont différents. Soit la date d'aujourd'hui à "July 23rd, 2008" , la première expression donne "2008-07-24 11:00" alors que la seconde donnera "2008-07-24 00:00". La raison est que ces cinq expressions influencent directement la date courante.

> Note:

> Notez les remarques qui suivent lorsque le jour de semaine courant est le même que le jour de semaine utilisé dans la chaine de date/time. Le jour de semaine courant aurait pu être recalculé par rapport aux parties non relatives de la chaine date/time.

> 1. "dayname" n'avance pas vers un autre jour. (Exemple : "Wed July 23rd, 2008" signifie "2008-07-23").
> 2. "number dayname" n'avance pas vers un autre jour. (Exemple : "1 wednesday july 23rd, 2008" signifie "2008-07-23").
> 3. "number week dayname" ajoutera d'abord le nombre de semaines, mais n'avancera pas vers un autre jour. Dans ce cas "number week" et "dayname" sont deux blocs distincts. (Exemple : "+1 week wednesday july 23rd, 2008" signifie "2008-07-30").
> 4. "ordinal dayname" avance vers un autre jour. (Exemple : "first wednesday july 23rd, 2008" signifie "2008-07-30").
> 5. "number week ordinal dayname" ajoutera d'abord le nombre de semaines et ensuite avancera vers un autre jour. Dans ce cas, "number week" et "ordinal dayname" sont deux blocs distincts. (Exemple : "+1 week first wednesday july 23rd, 2008" signifie "2008-08-06").
> 6. "ordinal dayname 'of' " n'avance pas vers un autre jour. (Exemple : "first wednesday of july 23rd, 2008" signifie "2008-07-02" car la phrase avec 'of' remet à zéro le jour du mois vers '1' et le '23' sera ignoré).

> Notez aussi que le "of" dans "ordinal space dayname space 'of' " et "'last' space dayname espace 'of' " fait quelque chose de spécial.

> 1. Il affecte le jour du mois à 1.
> 2. "ordinal dayname 'of' " n'avance pas vers un autre jour. (Exemple : "first tuesday of july 2008" signifie "2008-07-01").
> 3. "ordinal dayname " avance vers un autre jour. (Exemple : "first tuesday july 2008" signifie "2008-07-08", voyez aussi le point numéro 4 de la liste ci-dessus).
> 4. "'last' dayname 'of' " prend le dernier dayname du mois courant. (Exemple : "last wed of july 2008" signifie "2008-07-30")
> 5. "'last' dayname" prend le dernier dayname à partir du jour actuel. (Exemple : "last wed july 2008" signifie "2008-06-25"; "july 2008" affecte d'abord la date courante à "2008-07-01" et ensuite "last wed" remonte au dernier mercredi qui est le "2008-06-25").

> Note:

> Les valeurs relatives des mois calculés sont basées sur le nombre de jours des mois que l'on utilise. Par exemple, "+2 month 2011-11-30", donnera comme résultat la date "2012-01-30". Ceci est du au fait que le mois de novembre comporte 30 jours, et que le mois de décembre en comporte 31, soit un ajout total de 61 jours.

> Note:

> number est un nombre entier ; si un nombre décimal est donné, le point (ou la virgule) sera probablement interprété comme un délimiteur. Par exemple, '+1.5 hours' sera analysé en tant que '+1 5 hours', et non pas comme '+1 hour +30 minutes'.

### Historique

Version | Description
--- | ---
5.6.23, 7.0.8 | Les semaines commencent toujours le lundi. Autrefois, le dimanche était également considéré pour commencer une semaine.
5.3.3 | "first day" et "last day" ont été modifié pour se comporter comme "+1 day" et "-1 day", respectivement. Précédemment, le comportement était comme "first day of" et "last day of".