manipulation de dates

Bonjour à tous,

Je cherche à générer dans le code d’une de mes pages des dates sous la forme aammjj.
J’ai vu sur le site spip des filtres qui pourraient me permettre d’obtenir ceci pour des dates de rédactions, de modification… mais est-ce possible pour la date du jour (date à laquelle le visiteur ouvre la page), pour la veille, les sept jours précédents… avec du code spip ou dois-je passer par du php ?

Merci pour votre aide

Boby

Boby K wrote:

la date du jour (date à laquelle le visiteur ouvre la page),

#DATE en-dehors d'une boucle, ou bien #ENV{date} n'importe où (pourvu que "date" n'est pas renseigné dans l'URL.

pour la veille, les sept jours précédents... avec du code spip ou dois-je passer par du php ?

J'utilise des filtres dans mes_fonctions.php

Par ex. pour bâtir une des flèches sur la page Lectures bibliques quotidiennes - Taizé

"#URL_ARTICLE?date=[(#ENV{date}|next_sunday)]"

et, dans mes_fonctions.php :

function next_sunday($mydate) {
$mydate = strtotime($mydate);
$mydate = strtotime("next Sunday", $mydate);
return date('Y-m-d', $mydate);
}

dans le même style, on peut avoir :

function yesterday($mydate) {
$mydate = strtotime($mydate);
$mydate = strtotime("yesterday", $mydate);
return date('Y-m-d', $mydate);
}

etc.

Paolo

Boby K wrote:

la date du jour (date à laquelle le visiteur ouvre la page),

#DATE en-dehors d'une boucle, ou bien #ENV{date} n'importe où (pourvu que "date"
n'est pas renseigné dans l'URL.

pour la veille, les sept jours précédents... avec du code spip ou dois-je passer par du php ?

J'utilise des filtres dans mes_fonctions.php

--- Très bien, j'ai appliqué ces idées et en suis très satisfait !
Un petit complément : comment modifier ces fonctions pour qu'elles ne renvoient pas les dates en Y-m-d mais que leur format soit fixé par un filtre supplémentaire ?
Par exemple :
[(#DATE|last_sunday|Y-m-d)]
donnerait le même résultat que votre fonction mais
[(#DATE|last_sunday|ymd)]
donnerait aujourd'hui 090215 ?

Merci

Boby

Par ex. pour bâtir une des flèches sur la page Lectures bibliques quotidiennes - Taizé

"#URL_ARTICLE?date=[(#ENV{date}|next_sunday)]"

et, dans mes_fonctions.php :

function next_sunday($mydate) {
$mydate = strtotime($mydate);
$mydate = strtotime("next Sunday", $mydate);
return date('Y-m-d', $mydate);
}

dans le même style, on peut avoir :

function yesterday($mydate) {
$mydate = strtotime($mydate);
$mydate = strtotime("yesterday", $mydate);
return date('Y-m-d', $mydate);
}

etc.

Paolo

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

irc://irc.freenode.net/spip ou http://embed.mibbit.com/?server=irc.freenode.net&channel=%23spip

Boby K wrote:

renvoient pas les dates en Y-m-d mais que leur format soit fixé par un filtre supplémentaire ?

  [(#DATE|last_sunday|affdate{'Y-m-d'})]

je pense.

Voir : Les filtres de SPIP - SPIP
et PHP: date - Manual

Paolo

Merci, ça marche !
----- Original Message -----

Boby K wrote:

renvoient pas les dates en Y-m-d mais que leur format soit fixé par un filtre supplémentaire ?

  [(#DATE|last_sunday|affdate{'Y-m-d'})]

je pense.

Voir : Les filtres de SPIP - SPIP
et PHP: date - Manual

Paolo

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

irc://irc.freenode.net/spip ou http://embed.mibbit.com/?server=irc.freenode.net&channel=%23spip

Bonjour,

Encore une petite question au sujet des dates :
j'aimerais faire une fonction dans mes_fonctions.php qui me retourne la date du dernier jour hors week-end.
Ce serait donc quelque chose comme :

function der_jour_ouv($mydate) {
$mydate = strtotime($mydate);
$mydate = strtotime("yesterday", $mydate);
si cette date correspond à un samedi, refaire
    $mydate = strtotime("yesterday", $mydate);
si elle correspond à un dimanche, refaire
    $mydate = strtotime("yesterday", $mydate);
deux fois
return date('Y-m-d', $mydate);
}

Ce genre d'algorithme est-il possible et si oui, pouvez-vous m'aider à le coder ?

Par ailleurs, question supplémentaire :
Comment faire pour obtenir l'avant-dernier jour hors week-end (par exemple le jeudi si on est un samedi, dimanche ou lundi) ?
Est-ce que par exemple cett fonction marcherait :

function avant_der_jour_ouv($mydate) {
$mydate = der_jour_ouv($mydate);
return date('Y-m-d', $mydate);
}

Merci pour votre aide

Boby

----- Original Message ----- From: "Paolo" <paolo2@taize.fr>
To: <spip@rezo.net>
Sent: Wednesday, February 18, 2009 9:21 AM
Subject: Re: [Spip] manipulation de dates

Boby K wrote:

renvoient pas les dates en Y-m-d mais que leur format soit fixé par un filtre supplémentaire ?

  [(#DATE|last_sunday|affdate{'Y-m-d'})]

je pense.

Voir : Les filtres de SPIP - SPIP
et PHP: date - Manual

Paolo

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

irc://irc.freenode.net/spip ou http://embed.mibbit.com/?server=irc.freenode.net&channel=%23spip

Je ne suis pas sûr de bien comprendre le but recherché :

j’aimerais faire une fonction dans mes_fonctions.php qui me retourne la
date du dernier jour hors week-end.

Est-ce que cette reformulation est correcte : retourner la date du premier vendredi suivant une date donnée, ou le jour même si on est un vendredi ?
Si cest bien ça, il suffit de faire :

function der_jour_ouv($date) {

(attention : $date est censé être un entier unixtimestamp)

return date(‹ d/m/Y ›,strtotime(‹ friday ›,$date));
}

Ou, si on souhaite plutôt retourner le prochain vendredi même si on est un vendredi :

function der_jour_ouv($date) {

(attention : $date est censé être un entier unixtimestamp)

return date(‹ d/m/Y ›,strtotime(‹ next friday ›,$date));
}

Pour la question supplémentaire :

Par ailleurs, question supplémentaire :
Comment faire pour obtenir l’avant-dernier jour hors week-end (par
exemple le jeudi si on est un samedi, dimanche ou lundi) ?

Il suffit de remplacer par exemple ‹ friday › par ‹ tuesday › dans la fonction ci-dessus.

Fred

Ma formulation était sans doute imprécise.
Ma question était :
j’aimerais faire une fonction dans mes_fonctions.php qui me retourne la date du dernier jour hors week-end
précédent le jour transmis à la fonction.

Par exemple, si on fait der_jour_ouv(#DATE),
on obtient lundi si on est mardi mais on obtient vendredi si on est lundi, samedi ou dimanche.

D’où également ma question supplémentaire « en boucle »…

Pour le moment, j’ai fait ça :

function der_jour_hors_we($mydate) {
$mydate = strtotime($mydate);
$mydate = strtotime(« yesterday », $mydate);
$der_dim = strtotime(« last Sunday », $mydate);
$der_sam = strtotime(« last Saturday », $mydate);
$der_ven = strtotime(« last Friday », $mydate);
if( $mydate == $der_sam)
$my_date=$der_ven;
if( $mydate == $der_dim)
$my_date=$der_ven;
return date(‹ Y-m-d ›, $mydate);
}

mais je n’arrive pas à « boucler » cette fonction pour obtenir l’avant-dernier jour précédent le week-end.

Merci

Boby

Je ne suis pas sûr de bien comprendre le but recherché :

j’aimerais faire une fonction dans mes_fonctions.php qui me retourne la
date du dernier jour hors week-end.

Est-ce que cette reformulation est correcte : retourner la date du premier vendredi suivant une date donnée, ou le jour même si on est un vendredi ?
Si cest bien ça, il suffit de faire :

function der_jour_ouv($date) {

(attention : $date est censé être un entier unixtimestamp)

return date(‹ d/m/Y ›,strtotime(‹ friday ›,$date));
}

Ou, si on souhaite plutôt retourner le prochain vendredi même si on est un vendredi :

function der_jour_ouv($date) {

(attention : $date est censé être un entier unixtimestamp)

return date(‹ d/m/Y ›,strtotime(‹ next friday ›,$date));
}

Pour la question supplémentaire :

Par ailleurs, question supplémentaire :
Comment faire pour obtenir l’avant-dernier jour hors week-end (par
exemple le jeudi si on est un samedi, dimanche ou lundi) ?

Il suffit de remplacer par exemple ‹ friday › par ‹ tuesday › dans la fonction ci-dessus.

Fred

Boby K a écrit :

j'aimerais faire une fonction dans mes_fonctions.php qui me retourne la date du dernier jour hors week-end
précédent le jour transmis à la fonction.

dans mes_fonctions.php :
   function der_jour_hors_we($la_date) {
     // conversion en timestamp
     $le_timestamp = strtotime($la_date);
     // le jour de la semaine de $la_date
     $ce_jour = date('w', $le_timestamp);
     // si $ce_jour = 0 ou 1 (dimanche ou lundi)
     // retourner le vendredi précédent
     $decalage = array('0' =>'Friday', '1' =>'Friday', '2' =>'Monday',
                       '3' =>'Tuesday', '4' =>'Wednesday',
                       '5' =>'Thursday', '6' => 'Friday');
     // retourner la date au format spip pour filtres ultérieurs
     return date('Y-m-d H:i:s', strtotime('last '.$decalage[$ce_jour],
                 $le_timestamp));
}

à appeler dans le squelette :
   [(#DATE|der_jour_hors_we|nom_jour) ][(#DATE|der_jour_hors_we|affdate)]

Ah d’accord…

Ma formulation était sans doute imprécise.
Ma question était :
j’aimerais faire une fonction dans mes_fonctions.php qui me retourne la date du dernier jour hors week-end
précédent le jour transmis à la fonction.

Par exemple, si on fait der_jour_ouv(#DATE),
on obtient lundi si on est mardi mais on obtient vendredi si on est lundi, samedi ou dimanche.

D’où également ma question supplémentaire « en boucle »…

Alors voilà qui devrait faire l’affaire :

function der_jour_ouv($date) {

(attention : $date est censé être un entier unixtimestamp)

$date=strtotime(‹ -2 day ›,$date);
while((date(‹ w ›,$date)+6)%7>4) {
$date=strtotime(‹ -1 day ›,$date);
}
return date(‹ d/m/Y ›,$date);
}

Fred