[spip-dev] Souci avec le filtre normaliser_date ...

Quand la date en entrée est "1970-01-01 00:00:00", si je dispose bien
de la fonction strtotime(), alors j'ai une erreur :

strtotime("1970-01-01 00:00:00") renvoi -1 au lieu du 0 attendu.

Pour contourner le problème, j'ai ajouté au début de la fonction la
ligne suivante :

if ($date == '1970-01-01 00:00:00') $date = '1970-01-01 01:00:00';

Et du coup strtotime("1970-01-01 01:00:00") renvoi le 0 pas attendu.

Si quelqu'un peut m'expliquer ... :wink:

-Nicolas

strtotime("1970-01-01 00:00:00") renvoi -1 au lieu du 0 attendu.

Bonne réponse d'un autre Nicolas :

Le serveur serait-il en GMT+1 par hasard ?
epoch est fixé à 1970-01-01 00:00:00 GMT.

Peut-être faudrait-il donc préciser GMT dans les dates par défaut, ou
passer à 1970-01-02 pour être sûr ... :wink:

-Nicolas

Peut-être faudrait-il donc préciser GMT dans les dates par défaut,
ou passer à 1970-01-02 pour être sûr ... :wink:

Du coup, j'ai oublié de préciser, j'ajoute la ligne suivante au début
de la fonction :

if ($date == '1970-01-01 00:00:00') $date .= ' GMT';

-Nicolas

Du coup, j'ai oublié de préciser, j'ajoute la ligne suivante au début
de la fonction :

if ($date == '1970-01-01 00:00:00') $date .= ' GMT';

Je n'ai compris ni le problème ni la solution :wink:
Tu peux expliquer ?

-- Fil

Du coup, j'ai oublié de préciser, j'ajoute la ligne suivante au
début de la fonction :
if ($date == '1970-01-01 00:00:00') $date .= ' GMT';

Je n'ai compris ni le problème ni la solution :wink:
Tu peux expliquer ?

Les dates par défaut sont fixées à "1970-01-01 00:00:00" sans
précision de fuseau horaire, donc la fonction strtotime() prend celui
de la machine sur laquelle PHP tourne pour donner un timestamp en GMT.

Dans mon cas, je suis en GMT+1, donc la valeur "1970-01-01 00:00:00"
correspond en GMT à 1 heure avant "epoc", c'est à dire une valeur non
admise sur pas mal de systèmes POSIX.

Donc il faut soit préciser que la valeur par défaut est à GMT, cad
mettre "1970-01-01 00:00:00 GMT" plutôt que "1970-01-01 00:00:00",
soit faire autrement ...

-Nicolas

Les dates par défaut sont fixées à "1970-01-01 00:00:00" sans
précision de fuseau horaire, donc la fonction strtotime() prend celui
de la machine sur laquelle PHP tourne pour donner un timestamp en GMT.

Ah. Je ferais plutôt if (ereg("^1970-01-01", $date)) return '';

-- Fil

Je ferais plutôt if (ereg("^1970-01-01", $date)) return '';

Tu sais mieux que moi où est utilisée normaliser_date, donc à toi de
voir quels sont les effets de bord des deux solutions ... :wink:

-Nicolas