Je suis en train de me plonger sur une appli pour gérer le cimetière
destiné au serveur (SME 7)de ma mairie (pas riche) . SME utilise php4 et
je me retrouve coincé par mes dates limites au delà du 31/12/2037 pour
indiquer la fin des concessions cinquantenaires. J'ai aperçu sur fclp qq1
qui faisait référence à des ajouts de fonctions php4/php5. Quid?
J'ai contourné le pb en enregistrant sur ma table mysql mes dates de fin
sous la forme (à la louche): $date_limite=(date("j/m", mktime(0,0,0,mois
de départ, jour de départ).(date("/Y",mktime(....année départ)+durée
concession) mais je ne trouve ça un peu... bourrin.
Des suggestions plus élégantes?
Merci.
jpll
ps par contre j'ai été très étonné de constater que mktime fabriquait
des timestamps négatifs et qu'ils étaient correctement interprétés par
date()?? Existe-t-il une limite basse?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Olivier Miakinen
Je suis en train de me plonger sur une appli pour gérer le cimetière destiné au serveur (SME 7)de ma mairie (pas riche) . SME utilise php4 et je me retrouve coincé par mes dates limites au delà du 31/12/2037 pour indiquer la fin des concessions cinquantenaires.
J'imagine que ce qui t'intéresse c'est surtout le jour, plutôt que l'heure, la minute et la seconde... Voir alors les fonctions de calendriers, qui existent depuis PHP4 :
http://fr3.php.net/manual/fr/ref.calendar.php
ps par contre j'ai été très étonné de constater que mktime fabriquait des timestamps négatifs et qu'ils étaient correctement interprétés par date()?? Existe-t-il une limite basse?
<cit. http://fr3.php.net/manual/fr/function.mktime.php> Sur les systèmes où time_t un entier signé sur 32bits, ce qui est le plus courant de nos jours, la période valide pour year est quelque part près de 1901 et 2038, cependant, cette limitation n'est plus valable depuis PHP 5.1.0. </>
Je pense qu'il vaut mieux éviter d'utiliser les timestamps négatifs, et de restreindre sa période d'utilisation à 1970-2037.
-- Olivier Miakinen Troll du plus sage chez les conviviaux : le nouveau venu, avec son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
Je suis en train de me plonger sur une appli pour gérer le cimetière
destiné au serveur (SME 7)de ma mairie (pas riche) . SME utilise php4 et
je me retrouve coincé par mes dates limites au delà du 31/12/2037 pour
indiquer la fin des concessions cinquantenaires.
J'imagine que ce qui t'intéresse c'est surtout le jour, plutôt que
l'heure, la minute et la seconde... Voir alors les fonctions de
calendriers, qui existent depuis PHP4 :
http://fr3.php.net/manual/fr/ref.calendar.php
ps par contre j'ai été très étonné de constater que mktime fabriquait
des timestamps négatifs et qu'ils étaient correctement interprétés par
date()?? Existe-t-il une limite basse?
<cit. http://fr3.php.net/manual/fr/function.mktime.php>
Sur les systèmes où time_t un entier signé sur 32bits, ce qui est le
plus courant de nos jours, la période valide pour year est quelque part
près de 1901 et 2038, cependant, cette limitation n'est plus valable
depuis PHP 5.1.0.
</>
Je pense qu'il vaut mieux éviter d'utiliser les timestamps négatifs, et
de restreindre sa période d'utilisation à 1970-2037.
--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
Je suis en train de me plonger sur une appli pour gérer le cimetière destiné au serveur (SME 7)de ma mairie (pas riche) . SME utilise php4 et je me retrouve coincé par mes dates limites au delà du 31/12/2037 pour indiquer la fin des concessions cinquantenaires.
J'imagine que ce qui t'intéresse c'est surtout le jour, plutôt que l'heure, la minute et la seconde... Voir alors les fonctions de calendriers, qui existent depuis PHP4 :
http://fr3.php.net/manual/fr/ref.calendar.php
ps par contre j'ai été très étonné de constater que mktime fabriquait des timestamps négatifs et qu'ils étaient correctement interprétés par date()?? Existe-t-il une limite basse?
<cit. http://fr3.php.net/manual/fr/function.mktime.php> Sur les systèmes où time_t un entier signé sur 32bits, ce qui est le plus courant de nos jours, la période valide pour year est quelque part près de 1901 et 2038, cependant, cette limitation n'est plus valable depuis PHP 5.1.0. </>
Je pense qu'il vaut mieux éviter d'utiliser les timestamps négatifs, et de restreindre sa période d'utilisation à 1970-2037.
-- Olivier Miakinen Troll du plus sage chez les conviviaux : le nouveau venu, avec son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
jpll
Le Thu, 20 Jul 2006 10:29:27 +0000, Olivier Miakinen a écrit :
Je suis en train de me plonger sur une appli pour gérer le cimetière destiné au serveur (SME 7)de ma mairie (pas riche) . SME utilise php4 et je me retrouve coincé par mes dates limites au delà du 31/12/2037 pour indiquer la fin des concessions cinquantenaires.
J'imagine que ce qui t'intéresse c'est surtout le jour, plutôt que l'heure, la minute et la seconde... Voir alors les fonctions de calendriers, qui existent depuis PHP4 :
http://fr3.php.net/manual/fr/ref.calendar.php
Non c'est pas tout à fait ça. Un conseiller municipal s'est tapé toute le registre du cimetière qu'il a enregistré sous excel. J'ai repris la feuile de calc que j'ai transformée en csv et injecté le tout dans une base mysql. j'ai fait une petite class qui me découpe les jour/mois/année (sous cette forme dans le fichier csv) pour la date de départ de la concession et me la transforme en timestamp avec $start=mktime(.......) de là pour les dates de fin de durée de concession je fabrique un deuxième timestamp avec les mêmes éléments + la durée de la concession $end=mktime(..... ,année de départ+durée)
bon, je vais m'en sortir en créant un champs supplémentaire dans ma table ou j'enregistrerai en varchar sous la forme /jour/mois/année de départ+durée pour les timestamps > 2145826800.
ps par contre j'ai été très étonné de constater que mktime fabriquait des timestamps négatifs et qu'ils étaient correctement interprétés par date()?? Existe-t-il une limite basse?
<cit. http://fr3.php.net/manual/fr/function.mktime.php> Sur les systèmes où time_t un entier signé sur 32bits, ce qui est le plus courant de nos jours, la période valide pour year est quelque part près de 1901 et 2038, cependant, cette limitation n'est plus valable depuis PHP 5.1.0. </>
Je pense qu'il vaut mieux éviter d'utiliser les timestamps négatifs, et de restreindre sa période d'utilisation à 1970-2037.
j'aimerais bien, mais j'ai des concessions achetées depuis 1910 avec un bon paquet de cinquantenaires dans les années 50! ;)
Je suis obligé de le faire car un bon nombre de concession sont hors limite, les ayant-droits inconnus, et que le cimetière manque de places...;)
Le Thu, 20 Jul 2006 10:29:27 +0000, Olivier Miakinen a écrit :
Je suis en train de me plonger sur une appli pour gérer le cimetière
destiné au serveur (SME 7)de ma mairie (pas riche) . SME utilise php4
et je me retrouve coincé par mes dates limites au delà du 31/12/2037
pour indiquer la fin des concessions cinquantenaires.
J'imagine que ce qui t'intéresse c'est surtout le jour, plutôt que
l'heure, la minute et la seconde... Voir alors les fonctions de
calendriers, qui existent depuis PHP4 :
http://fr3.php.net/manual/fr/ref.calendar.php
Non c'est pas tout à fait ça. Un conseiller municipal s'est tapé toute
le registre du cimetière qu'il a enregistré sous excel. J'ai repris
la feuile de calc que j'ai transformée en csv et injecté le tout dans
une base mysql. j'ai fait une petite class qui me découpe les
jour/mois/année (sous cette forme dans le fichier csv) pour la date de
départ de la concession et me la transforme en timestamp avec
$start=mktime(.......) de là pour les dates de fin de durée de
concession je fabrique un deuxième timestamp avec les mêmes éléments +
la durée de la concession $end=mktime(..... ,année de départ+durée)
bon, je vais m'en sortir en créant un champs supplémentaire dans ma
table ou j'enregistrerai en varchar sous la forme /jour/mois/année de
départ+durée pour les timestamps > 2145826800.
ps par contre j'ai été très étonné de constater que mktime
fabriquait des timestamps négatifs et qu'ils étaient correctement
interprétés par date()?? Existe-t-il une limite basse?
<cit. http://fr3.php.net/manual/fr/function.mktime.php> Sur les systèmes
où time_t un entier signé sur 32bits, ce qui est le plus courant de nos
jours, la période valide pour year est quelque part près de 1901 et
2038, cependant, cette limitation n'est plus valable depuis PHP 5.1.0.
</>
Je pense qu'il vaut mieux éviter d'utiliser les timestamps négatifs, et
de restreindre sa période d'utilisation à 1970-2037.
j'aimerais bien, mais j'ai des concessions achetées depuis 1910 avec un
bon paquet de cinquantenaires dans les années 50! ;)
Je suis obligé de le faire car un bon nombre de concession sont hors
limite, les ayant-droits inconnus, et que le cimetière manque de
places...;)
Le Thu, 20 Jul 2006 10:29:27 +0000, Olivier Miakinen a écrit :
Je suis en train de me plonger sur une appli pour gérer le cimetière destiné au serveur (SME 7)de ma mairie (pas riche) . SME utilise php4 et je me retrouve coincé par mes dates limites au delà du 31/12/2037 pour indiquer la fin des concessions cinquantenaires.
J'imagine que ce qui t'intéresse c'est surtout le jour, plutôt que l'heure, la minute et la seconde... Voir alors les fonctions de calendriers, qui existent depuis PHP4 :
http://fr3.php.net/manual/fr/ref.calendar.php
Non c'est pas tout à fait ça. Un conseiller municipal s'est tapé toute le registre du cimetière qu'il a enregistré sous excel. J'ai repris la feuile de calc que j'ai transformée en csv et injecté le tout dans une base mysql. j'ai fait une petite class qui me découpe les jour/mois/année (sous cette forme dans le fichier csv) pour la date de départ de la concession et me la transforme en timestamp avec $start=mktime(.......) de là pour les dates de fin de durée de concession je fabrique un deuxième timestamp avec les mêmes éléments + la durée de la concession $end=mktime(..... ,année de départ+durée)
bon, je vais m'en sortir en créant un champs supplémentaire dans ma table ou j'enregistrerai en varchar sous la forme /jour/mois/année de départ+durée pour les timestamps > 2145826800.
ps par contre j'ai été très étonné de constater que mktime fabriquait des timestamps négatifs et qu'ils étaient correctement interprétés par date()?? Existe-t-il une limite basse?
<cit. http://fr3.php.net/manual/fr/function.mktime.php> Sur les systèmes où time_t un entier signé sur 32bits, ce qui est le plus courant de nos jours, la période valide pour year est quelque part près de 1901 et 2038, cependant, cette limitation n'est plus valable depuis PHP 5.1.0. </>
Je pense qu'il vaut mieux éviter d'utiliser les timestamps négatifs, et de restreindre sa période d'utilisation à 1970-2037.
j'aimerais bien, mais j'ai des concessions achetées depuis 1910 avec un bon paquet de cinquantenaires dans les années 50! ;)
Je suis obligé de le faire car un bon nombre de concession sont hors limite, les ayant-droits inconnus, et que le cimetière manque de places...;)
Olivier Miakinen
J'imagine que ce qui t'intéresse c'est surtout le jour, plutôt que l'heure, la minute et la seconde... Voir alors les fonctions de calendriers, qui existent depuis PHP4 :
http://fr3.php.net/manual/fr/ref.calendar.php
Non c'est pas tout à fait ça.
Ah ? Tu as besoin de savoir à la seconde près à quelle heure une concession a été achetée ?
Un conseiller municipal s'est tapé toute le registre du cimetière qu'il a enregistré sous excel. J'ai repris la feuile de calc que j'ai transformée en csv et injecté le tout dans une base mysql. j'ai fait une petite class qui me découpe les jour/mois/année (sous cette forme dans le fichier csv) pour la date de départ de la concession et me la transforme en timestamp avec $start=mktime(.......) de là pour les dates de fin de durée de concession je fabrique un deuxième timestamp avec les mêmes éléments + la durée de la concession $end=mktime(..... ,année de départ+durée)
Je ne vois pas où est le problème pour utiliser les fonctions de calendrier, qui te donnent un entier représentant une date, entier valide sur des millénaires.
Tu utiliseras alors : $start = cal_to_jd(CAL_GREGORIAN, mois, jour, année) $end = cal_to_jd(CAL_GREGORIAN, mois, jour, année+50) http://fr3.php.net/manual/fr/function.cal-to-jd.php
Si vraiment tu veux passer par un mktime() unix, tu peux alors utiliser ensuite unixtojd(). Mais ceci n'est faisable que pour les dates comprises entre 1970 et 2037 puisqu'en dehors de cette période le résultat est aléatoire (soit avant 1970, soit après 2037, selon que les entiers sont considérés ou non comme signés). http://fr3.php.net/manual/fr/function.unixtojd.php
bon, je vais m'en sortir en créant un champs supplémentaire dans ma table ou j'enregistrerai en varchar sous la forme /jour/mois/année de départ+durée pour les timestamps > 2145826800.
[...] j'ai des concessions achetées depuis 1910 avec un bon paquet de cinquantenaires dans les années 50! ;)
Alors il est complètement déraisonnable d'utiliser quelque chose qui n'est pas défini pour les dates antérieures à 1970. Encore une fois, à moins que tu n'aies besoin d'une précision inférieure au jour, et que *toutes* les dates soient comprises entre 1970 et 2037, tu ne *dois* pas utiliser mktime ou ta base de données sera inutilisable le jour où tu changeras d'hébergeur ou de version de PHP.
Je suis obligé de le faire car un bon nombre de concession sont hors limite, les ayant-droits inconnus, et que le cimetière manque de places...;)
Oui, tu es obligé d'utiliser calendar plutôt que mktime, nous sommes bien d'accord. ;-)
-- Olivier Miakinen
J'imagine que ce qui t'intéresse c'est surtout le jour, plutôt que
l'heure, la minute et la seconde... Voir alors les fonctions de
calendriers, qui existent depuis PHP4 :
http://fr3.php.net/manual/fr/ref.calendar.php
Non c'est pas tout à fait ça.
Ah ? Tu as besoin de savoir à la seconde près à quelle heure une
concession a été achetée ?
Un conseiller municipal s'est tapé toute
le registre du cimetière qu'il a enregistré sous excel. J'ai repris
la feuile de calc que j'ai transformée en csv et injecté le tout dans
une base mysql. j'ai fait une petite class qui me découpe les
jour/mois/année (sous cette forme dans le fichier csv) pour la date de
départ de la concession et me la transforme en timestamp avec
$start=mktime(.......) de là pour les dates de fin de durée de
concession je fabrique un deuxième timestamp avec les mêmes éléments +
la durée de la concession $end=mktime(..... ,année de départ+durée)
Je ne vois pas où est le problème pour utiliser les fonctions de
calendrier, qui te donnent un entier représentant une date, entier
valide sur des millénaires.
Tu utiliseras alors :
$start = cal_to_jd(CAL_GREGORIAN, mois, jour, année)
$end = cal_to_jd(CAL_GREGORIAN, mois, jour, année+50)
http://fr3.php.net/manual/fr/function.cal-to-jd.php
Si vraiment tu veux passer par un mktime() unix, tu peux alors utiliser
ensuite unixtojd(). Mais ceci n'est faisable que pour les dates
comprises entre 1970 et 2037 puisqu'en dehors de cette période le
résultat est aléatoire (soit avant 1970, soit après 2037, selon que
les entiers sont considérés ou non comme signés).
http://fr3.php.net/manual/fr/function.unixtojd.php
bon, je vais m'en sortir en créant un champs supplémentaire dans ma
table ou j'enregistrerai en varchar sous la forme /jour/mois/année de
départ+durée pour les timestamps > 2145826800.
[...] j'ai des concessions achetées depuis 1910 avec un
bon paquet de cinquantenaires dans les années 50! ;)
Alors il est complètement déraisonnable d'utiliser quelque chose qui
n'est pas défini pour les dates antérieures à 1970. Encore une fois, à
moins que tu n'aies besoin d'une précision inférieure au jour, et que
*toutes* les dates soient comprises entre 1970 et 2037, tu ne *dois* pas
utiliser mktime ou ta base de données sera inutilisable le jour où tu
changeras d'hébergeur ou de version de PHP.
Je suis obligé de le faire car un bon nombre de concession sont hors
limite, les ayant-droits inconnus, et que le cimetière manque de
places...;)
Oui, tu es obligé d'utiliser calendar plutôt que mktime, nous sommes
bien d'accord. ;-)
J'imagine que ce qui t'intéresse c'est surtout le jour, plutôt que l'heure, la minute et la seconde... Voir alors les fonctions de calendriers, qui existent depuis PHP4 :
http://fr3.php.net/manual/fr/ref.calendar.php
Non c'est pas tout à fait ça.
Ah ? Tu as besoin de savoir à la seconde près à quelle heure une concession a été achetée ?
Un conseiller municipal s'est tapé toute le registre du cimetière qu'il a enregistré sous excel. J'ai repris la feuile de calc que j'ai transformée en csv et injecté le tout dans une base mysql. j'ai fait une petite class qui me découpe les jour/mois/année (sous cette forme dans le fichier csv) pour la date de départ de la concession et me la transforme en timestamp avec $start=mktime(.......) de là pour les dates de fin de durée de concession je fabrique un deuxième timestamp avec les mêmes éléments + la durée de la concession $end=mktime(..... ,année de départ+durée)
Je ne vois pas où est le problème pour utiliser les fonctions de calendrier, qui te donnent un entier représentant une date, entier valide sur des millénaires.
Tu utiliseras alors : $start = cal_to_jd(CAL_GREGORIAN, mois, jour, année) $end = cal_to_jd(CAL_GREGORIAN, mois, jour, année+50) http://fr3.php.net/manual/fr/function.cal-to-jd.php
Si vraiment tu veux passer par un mktime() unix, tu peux alors utiliser ensuite unixtojd(). Mais ceci n'est faisable que pour les dates comprises entre 1970 et 2037 puisqu'en dehors de cette période le résultat est aléatoire (soit avant 1970, soit après 2037, selon que les entiers sont considérés ou non comme signés). http://fr3.php.net/manual/fr/function.unixtojd.php
bon, je vais m'en sortir en créant un champs supplémentaire dans ma table ou j'enregistrerai en varchar sous la forme /jour/mois/année de départ+durée pour les timestamps > 2145826800.
[...] j'ai des concessions achetées depuis 1910 avec un bon paquet de cinquantenaires dans les années 50! ;)
Alors il est complètement déraisonnable d'utiliser quelque chose qui n'est pas défini pour les dates antérieures à 1970. Encore une fois, à moins que tu n'aies besoin d'une précision inférieure au jour, et que *toutes* les dates soient comprises entre 1970 et 2037, tu ne *dois* pas utiliser mktime ou ta base de données sera inutilisable le jour où tu changeras d'hébergeur ou de version de PHP.
Je suis obligé de le faire car un bon nombre de concession sont hors limite, les ayant-droits inconnus, et que le cimetière manque de places...;)
Oui, tu es obligé d'utiliser calendar plutôt que mktime, nous sommes bien d'accord. ;-)
-- Olivier Miakinen
Yannick
Le Thu, 20 Jul 2006 10:16:01 +0000, jpll a écrit :
Bonjour,
Je suis en train de me plonger sur une appli pour gérer le cimetière destiné au serveur (SME 7)de ma mairie (pas riche) . SME utilise php4 et je me retrouve coincé par mes dates limites au delà du 31/12/2037 pour indiquer la fin des concessions cinquantenaires. J'ai aperçu sur fclp qq1 qui faisait référence à des ajouts de fonctions php4/php5. Quid?
J'ai contourné le pb en enregistrant sur ma table mysql mes dates de fin sous la forme (à la louche): $date_limite=(date("j/m", mktime(0,0,0,mois de départ, jour de départ).(date("/Y",mktime(....année départ)+durée concession) mais je ne trouve ça un peu... bourrin.
Des suggestions plus élégantes?
Merci.
jpll
ps par contre j'ai été très étonné de constater que mktime fabriquait des timestamps négatifs et qu'ils étaient correctement interprétés par date()?? Existe-t-il une limite basse?
Bonjour,
je suis très certainement hors-sujet, mais as-tu déjà jeté un oeil à "OpenCimetière" dont il existe une démo à cette adresse: http://demo.openmairie.org/openmairie_cimetiere/ . C'est un produit libre et gratuit. Travaillant également dans une mairie, c'est une solution que nous nous sommes promis d'examiner de près à l'occasion.
Le Thu, 20 Jul 2006 10:16:01 +0000, jpll a écrit :
Bonjour,
Je suis en train de me plonger sur une appli pour gérer le cimetière
destiné au serveur (SME 7)de ma mairie (pas riche) . SME utilise php4 et
je me retrouve coincé par mes dates limites au delà du 31/12/2037 pour
indiquer la fin des concessions cinquantenaires. J'ai aperçu sur fclp qq1
qui faisait référence à des ajouts de fonctions php4/php5. Quid?
J'ai contourné le pb en enregistrant sur ma table mysql mes dates de fin
sous la forme (à la louche): $date_limite=(date("j/m", mktime(0,0,0,mois
de départ, jour de départ).(date("/Y",mktime(....année départ)+durée
concession) mais je ne trouve ça un peu... bourrin.
Des suggestions plus élégantes?
Merci.
jpll
ps par contre j'ai été très étonné de constater que mktime fabriquait
des timestamps négatifs et qu'ils étaient correctement interprétés par
date()?? Existe-t-il une limite basse?
Bonjour,
je suis très certainement hors-sujet, mais as-tu déjà jeté un oeil à
"OpenCimetière" dont il
existe une démo à cette
adresse: http://demo.openmairie.org/openmairie_cimetiere/ .
C'est un produit libre et gratuit.
Travaillant également dans une mairie, c'est une solution que nous nous
sommes promis d'examiner de près à l'occasion.
Le Thu, 20 Jul 2006 10:16:01 +0000, jpll a écrit :
Bonjour,
Je suis en train de me plonger sur une appli pour gérer le cimetière destiné au serveur (SME 7)de ma mairie (pas riche) . SME utilise php4 et je me retrouve coincé par mes dates limites au delà du 31/12/2037 pour indiquer la fin des concessions cinquantenaires. J'ai aperçu sur fclp qq1 qui faisait référence à des ajouts de fonctions php4/php5. Quid?
J'ai contourné le pb en enregistrant sur ma table mysql mes dates de fin sous la forme (à la louche): $date_limite=(date("j/m", mktime(0,0,0,mois de départ, jour de départ).(date("/Y",mktime(....année départ)+durée concession) mais je ne trouve ça un peu... bourrin.
Des suggestions plus élégantes?
Merci.
jpll
ps par contre j'ai été très étonné de constater que mktime fabriquait des timestamps négatifs et qu'ils étaient correctement interprétés par date()?? Existe-t-il une limite basse?
Bonjour,
je suis très certainement hors-sujet, mais as-tu déjà jeté un oeil à "OpenCimetière" dont il existe une démo à cette adresse: http://demo.openmairie.org/openmairie_cimetiere/ . C'est un produit libre et gratuit. Travaillant également dans une mairie, c'est une solution que nous nous sommes promis d'examiner de près à l'occasion.