Fonction quirenvoie la date du prochain jour
Fermé
Nicolas Cartron
-
25 sept. 2002 à 08:40
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 - 26 sept. 2002 à 03:35
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 - 26 sept. 2002 à 03:35
A voir également:
- Fonction quirenvoie la date du prochain jour
- Vba date du jour - Forum Excel
- Fonction si avec date ✓ - Forum Excel
- Iphone 14 date de sortie - Guide
- Whatsapp la date est incorrecte ✓ - Forum Mobile
- Fonction si et - Guide
7 réponses
teebo
Messages postés
33478
Date d'inscription
jeudi 14 octobre 2004
Statut
Modérateur
Dernière intervention
24 février 2011
1 795
25 sept. 2002 à 09:12
25 sept. 2002 à 09:12
Salut, tu es en quel langage, sinon on peut rien dire nous, les fonctions dependent forcement du langage, mais le principe general est d ajouter 1...
ö,ö
\_/
ö,ö
\_/
blux
Messages postés
24878
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
25 mars 2023
3 311
25 sept. 2002 à 09:13
25 sept. 2002 à 09:13
Salut,
dans quel langage ?
VB, C, C++, C#, J#, Java, PHP, DELPHI... ? :-)
A+ Blux "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
dans quel langage ?
VB, C, C++, C#, J#, Java, PHP, DELPHI... ? :-)
A+ Blux "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
oups, désolé, c'est du Perl.
Le principe du +1 ne me va pas, puisque je risque de me retrouver avec
des 30 fevrier ou autres betises...
au pire j'ai trouvé une autre soluce mais bon...
Le principe du +1 ne me va pas, puisque je risque de me retrouver avec
des 30 fevrier ou autres betises...
au pire j'ai trouvé une autre soluce mais bon...
Marden
Messages postés
1072
Date d'inscription
dimanche 11 février 2001
Statut
Membre
Dernière intervention
29 janvier 2006
209
25 sept. 2002 à 15:17
25 sept. 2002 à 15:17
Tu ne peux pas couper aux tests des années bissextiles du nombre de jours dans le mois. A titre d'aide, quelques instructions en JS :
var jours = new Array() ;
jours[0] = new Array(31,28,31,30,31,30,31,31,30,31,30,31) ;
jours[1] = new Array(31,29,31,30,31,30,31,31,30,31,30,31) ;
/* ------------------------------------------------------ */
function bissex(an) {
ret = (an%400 == 0 ) | (( an%4 == 0 ) & ( an%100 != 0 )) ;
return (ret?1:0)
}
// décomposer la date du jour en (annee,mois,jour)
bis = bissex(annee) ;
/* ------------------------------------------------------ */
jour++
if ( jour > jours[bis][mois-1] ) {
jour = 1 ;
mois++
if ( mois > 12 ) {
mois = 1 ;
annee++ ;
}
}
// recomposer la date
var jours = new Array() ;
jours[0] = new Array(31,28,31,30,31,30,31,31,30,31,30,31) ;
jours[1] = new Array(31,29,31,30,31,30,31,31,30,31,30,31) ;
/* ------------------------------------------------------ */
function bissex(an) {
ret = (an%400 == 0 ) | (( an%4 == 0 ) & ( an%100 != 0 )) ;
return (ret?1:0)
}
// décomposer la date du jour en (annee,mois,jour)
bis = bissex(annee) ;
/* ------------------------------------------------------ */
jour++
if ( jour > jours[bis][mois-1] ) {
jour = 1 ;
mois++
if ( mois > 12 ) {
mois = 1 ;
annee++ ;
}
}
// recomposer la date
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
En Perl, y'a pas une fonction qui convertit en nombre de jour depuis une date donné, comme cela se voit en PHP, VB ou autre?
Kalamit,
Je ponce donc j'essuie
Kalamit,
Je ponce donc j'essuie
Bobinours
Messages postés
2898
Date d'inscription
jeudi 26 avril 2001
Statut
Membre
Dernière intervention
21 mars 2013
503
26 sept. 2002 à 02:40
26 sept. 2002 à 02:40
Arf :oD J'ai écrit le code pour la date d'hier, mais pas pour le lendemain :oD
sub getHier
{
my $date = shift;
my ($jour, $mois, $annee) = ($date =~ /(\d{2})-(\d{2})-(\d{4})/);
my ($hierJour, $hierMois, $hierAnnee) = ($jour, $mois, $annee);
if ($jour-1 <= 0) {
# Decrementation du JOUR
if (($mois == 1) || ($mois == 2) || ($mois == 4) || ($mois == 6) || ($mois == 8) || ($mois == 9) || ($mois == 11) ) {$hierJour = 31;}
elsif (($mois) == 3)
{
if ( (( $annee % 4 == 0 ) && ( $annee % 100 != 0 )) || ( $annee % 400 == 0 )) {
$hierJour = 29;
}
else {
$hierJour = 28;
}
}
else {$hierJour = 30;}
# Decrementation du MOIS et ANNEE
if ($mois <= 1) {
$hierMois = 11;
$hierAnnee = $annee-1;
}
else {$hierMois = $mois-1;}
}
else {$hierJour = $jour-1;}
return sprintf("%02d-%02d-%04d", $hierJour, $hierMois, $hierAnnee);
}
print getHier('01-03-2002'), "\n";
-= Bobinours =-
Une Contrée? http://bobin.underlands.org/cgi-bin/belette.pl
sub getHier
{
my $date = shift;
my ($jour, $mois, $annee) = ($date =~ /(\d{2})-(\d{2})-(\d{4})/);
my ($hierJour, $hierMois, $hierAnnee) = ($jour, $mois, $annee);
if ($jour-1 <= 0) {
# Decrementation du JOUR
if (($mois == 1) || ($mois == 2) || ($mois == 4) || ($mois == 6) || ($mois == 8) || ($mois == 9) || ($mois == 11) ) {$hierJour = 31;}
elsif (($mois) == 3)
{
if ( (( $annee % 4 == 0 ) && ( $annee % 100 != 0 )) || ( $annee % 400 == 0 )) {
$hierJour = 29;
}
else {
$hierJour = 28;
}
}
else {$hierJour = 30;}
# Decrementation du MOIS et ANNEE
if ($mois <= 1) {
$hierMois = 11;
$hierAnnee = $annee-1;
}
else {$hierMois = $mois-1;}
}
else {$hierJour = $jour-1;}
return sprintf("%02d-%02d-%04d", $hierJour, $hierMois, $hierAnnee);
}
print getHier('01-03-2002'), "\n";
-= Bobinours =-
Une Contrée? http://bobin.underlands.org/cgi-bin/belette.pl
Bobinours
Messages postés
2898
Date d'inscription
jeudi 26 avril 2001
Statut
Membre
Dernière intervention
21 mars 2013
503
26 sept. 2002 à 03:35
26 sept. 2002 à 03:35
Bein voila... Merci beaucoup à Marden pour son algo :o)
J'avais également oublié de gérer les années bissextiles dans ma fonction getHier(), grace à toi, c'est réparé.
sub getDemain
{
# Recuperation et décomposition de la date du jour en (jour, mois, annee)
my $date = shift;
my ($jour, $mois, $annee) = ( $date =~ m[(\d{2})/(\d{2})/(\d{4})] );
my @jours;
$jours[0] = [31,28,31,30,31,30,31,31,30,31,30,31];
$jours[1] = [31,29,31,30,31,30,31,31,30,31,30,31];
# ------------------------------------------------------ #
sub bissex
{
my $annee = shift;
my $ret = (( $annee%4 == 0 ) && ( $annee%100 != 0 )) || ( $annee%400 == 0 );
return ($ret ? 1 : 0);
}
my $bis = bissex($annee) ;
# ------------------------------------------------------ #
$jour++;
if ( $jour > $jours[$bis][$mois-1] ) {
$jour = 1;
$mois++;
if ( $mois > 12 ) {
$mois = 1;
$annee++;
}
}
return sprintf("%02d/%02d/%04d", $jour, $mois, $annee);
}
print getDemain('31/12/2000'), "\n";
J'avais également oublié de gérer les années bissextiles dans ma fonction getHier(), grace à toi, c'est réparé.
sub getDemain
{
# Recuperation et décomposition de la date du jour en (jour, mois, annee)
my $date = shift;
my ($jour, $mois, $annee) = ( $date =~ m[(\d{2})/(\d{2})/(\d{4})] );
my @jours;
$jours[0] = [31,28,31,30,31,30,31,31,30,31,30,31];
$jours[1] = [31,29,31,30,31,30,31,31,30,31,30,31];
# ------------------------------------------------------ #
sub bissex
{
my $annee = shift;
my $ret = (( $annee%4 == 0 ) && ( $annee%100 != 0 )) || ( $annee%400 == 0 );
return ($ret ? 1 : 0);
}
my $bis = bissex($annee) ;
# ------------------------------------------------------ #
$jour++;
if ( $jour > $jours[$bis][$mois-1] ) {
$jour = 1;
$mois++;
if ( $mois > 12 ) {
$mois = 1;
$annee++;
}
}
return sprintf("%02d/%02d/%04d", $jour, $mois, $annee);
}
print getDemain('31/12/2000'), "\n";