[Just Basic] heure

Résolu
macslan Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   -  
 amigo -
Bonjour,
j'aimerai savoir comment mettre dans une variable l'heure pas la secondes et minutes
merci
A voir également:

15 réponses

macslan Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   4
 
re,
j'ai reussis

[entrée]

rem demande la date et l'heure de naissance et definit la date et l'heure d'aujourd'hui

prompt "année de naissance : "; Annee

prompt "mois de naissance : " ; Mois

prompt "jours de naissance : "; Jour

prompt "heure de naissance : "; Heure

date2$ = DATE$("mm/dd/yyyy")

AnneeActuelle = VAL(RIGHT$(date2$, 4))

print AnneeActuelle

MoisActuelle=VAL(LEFT$(date2$, 2))

print MoisActuelle

JourActuelle = VAL(MID$(date2$, 4, 2))

print JourActuelle

HeureActuelle = Val(TIME$())

print HeureActuelle

end

print AnneeActuelle;" ";MoisActuelle;" ";JourActuelle;" ";HeureActuelle

end
[calcule]

rem calcule les differentes données

NBAnnee = AnneeActuelle-Annee

NBMois = (12-Mois)+(12-MoisActuelle)+12*(NBAnnee-1)

NBJour = (360-Mois*30)+(360-MoisActuelle*30)+360*(NBAnnee-1)

NBHeure = (24*360-Mois*30*24)+(24*360-MoisActuelle*30*24)+360*24*(NBAnnee-1)

[affichage]

rem affiche les annees mois jours heures

print "il y a eu exactement " ; NBAnnee; " années qui se sont écoulé"

print "il y a eu exactement " ; NBMois; " mois qui se sont écoulé"

print "il y a eu exactement " ; NBJour; " jours qui se sont écoulé"

print "il y a eu exactement " ; NBHeure; " heures qui se sont écoulé"


confirm "Avez-vous fini"; answer$

if answer$ = "no" then [entrée]

notice "fin"

end
1
amigo
 
Bonjour,

Je suis désolé de te dire que ton programme est faux
1) une année a 365 jours (et non 360) sauf les années bissextiles qui en ont 366
2) les mois n'ont pas tous 30 jours

j'ai fais le calcul avec ton programme:
Date de naissance : 25/12/2007 à 0 heures
Date actuelle : 30/04/2008 à 9 heures
Résultat : 5760 heures ce qui est faux, une petite verif sur Excel donne 3033 heures

Tu ferais mieux de tester le programme que je t'ai donné

Bonne continuation.
1
macslan Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   4
 
tre

j'ai oublier de dire mais dans ma donné il faut que 30 jour par mois et 360 jour dans l'année
1
amigo
 
Re,

De toute manière il y a quelque chose de faux dans ton raisonnement

En faisant le calcul avec comme données

Date de naissance : 25/12/2007 à 0 heures
Date actuelle : 30/04/2008 à 9 heures

On trouve une différence de plus de 2700 heures, entre la réalité et le résultat calculé, c'est un peu beaucoup, mais c'est toi qui juges.
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
macslan Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   4
 
salut

voici le code revu

[entrée]

rem demande la date et l'heure de naissance et definit la date et l'heure d'aujourd'hui

prompt "année de naissance : "; Annee

prompt "mois de naissance : " ; Mois

prompt "jours de naissance : "; Jour

prompt "heure de naissance : "; Heure

date2$ = DATE$("mm/dd/yyyy")

AnneeActuelle = VAL(RIGHT$(date2$, 4))

MoisActuelle=VAL(LEFT$(date2$, 2))

JourActuelle = VAL(MID$(date2$, 4, 2))

[calcule]

rem calcule les differentes données

NBAnnee = AnneeActuelle-Annee

NBMois = (12-Mois)+(MoisActuelle)+12*(NBAnnee-1)

NBJour = 30*NBMois+JourActuelle-Jour

NBHeure = NBJour*24

[affichage]

rem affiche les annees mois jours heures

print "il y a eu exactement " ; NBAnnee; " années qui se sont écoulé"

print "il y a eu exactement " ; NBMois; " mois qui se sont écoulé"

print "il y a eu exactement " ; NBJour; " jours qui se sont écoulé"

print "il y a eu exactement " ; NBHeure; " heures qui se sont écoulé"


confirm "Avez-vous fini"; answer$

if answer$ = "no" then [entrée]

notice "fin"

end
1
amigo
 
C'est mieux,

Encore un détail, tu as oublié l'heure actuelle et la calcul des années est incorrect
Voici la correction et ce sera bon.
HeureActuelle = VAL(TIME$)

REM calcule les differentes données

NBAnnee = AnneeActuelle - Annee - 1

NBMois = (12 - Mois) + (MoisActuelle) + 12 * (NBAnnee)

NBJour = 30 * NBMois + JourActuelle - Jour

NBHeure = NBJour * 24 + (24 - heure) + HeureActuelle

Salut.
1
amigo
 
Bonjour,

En Basic, il y a une fonction Time$ qui retourne une chaine représentant l'heure système

heure$=Time$
Print heure$

il ne reste plus qu'à traiter la variable heure$ pour en extraire la partie qui t'interesse, en utilisant les fonction left$, right$ et mid$.

A+.
0
amigo
 
bonsoir,

Il n'y a pas de fonction en Just Basic ni en QBasic pour calculer directement le nombre de jours entre 2 dates.

J'ai écrit ce programme qui calcule le nombre d'heures écoulées depuis l'heure de naissance jusqu'à l'heure actuelle.
Ce programme est pour QBasic, je pense qu'il est compatible avec Just Basic.

Entre la date de naissance avec le bon format par exemple 01/02/2008 (et pas 1/2/08), parce que je n'ai pas contrôlé la saisie.

Essaie et dit moi si ça marche.

DECLARE FUNCTION mois (num)
DECLARE FUNCTION bissextile (annee)

PRINT "Entrez la date de naissance jj/mm/aaaa : ";
INPUT date1$
PRINT
PRINT

mois1 = VAL(LEFT$(date1$, 2))
jour1 = VAL(MID$(date1$, 4, 2))
annee1 = VAL(RIGHT$(date1$, 4))

PRINT "Entrez l'heure de naissance : ";
INPUT heure1
PRINT
PRINT

REM Date du jour actuel
date2$ = DATE$
jour2 = VAL(LEFT$(date2$, 2))
mois2 = VAL(MID$(date2$, 4, 2))
annee2 = VAL(RIGHT$(date2$, 4))

REM Heure courante
heure2 = VAL(TIME$)


REM Cas général
IF annee1 < annee2 THEN

REM Nombre d'années entières
   FOR i = annee1 + 1 TO annee2 - 1
      jours = jours + 365 + bissextile(i)
   NEXT
   
REM Nombre de jours année de naissance
   jours = jours + mois(mois1) - jour1
   IF mois1 = 2 THEN jours = jours + bissextile(annee1)
   
   FOR i = mois1 + 1 TO 12
      jours = jours + mois(i)
      IF i = 2 THEN jours = jours + bissextile(annee1)
   NEXT
 
REM Nombre de jours année courante  
   FOR i = 1 TO mois2 - 1
      jours = jours + mois(i)
      IF i = 2 THEN jours = jours + bissextile(annee2)
   NEXT

REM Calcul des heures   
   jours = jours + jour2 - 1
   heures = 24 - heure1
   heures = heures + (jours * 24)
   heures = heures + heure2
   
END IF

REM Cas particulier année de naissance = année en cours
IF annee1 = annee2 AND mois1 < mois2 THEN

   jours = mois(mois1) - jour1
   
   FOR i = mois1 + 1 TO mois2 - 1
      jours = jours + mois(i)
      IF i = 2 THEN jours = jours + bissextile(annee2)
   NEXT
   
   jours = jours + jour2 - 1
   heures = 24 - heure1
   heures = heures + (jours * 24)
   heures = heures + heure2
   
END IF

REM Cas particulier année de naissance et mois de naissance = année encours et mois en cours
IF annee1 = annee2 AND mois1 = mois2 THEN

   jours = jour2 - jour1 - 1
   heures = 24 - heure1
   heures = heures + (jours * 24)
   heures = heures + heure2
   IF jour1 = jour2 THEN heures = heure2 - heure1
   
END IF

PRINT "Il s'est écoulé "; heures; " heures depuis la naissance"

END

FUNCTION bissextile (annee)
IF ((annee MOD 4 = 0) AND (annee MOD 100 > 0)) OR (annee MOD 400 = 0) THEN bissextile = 1 ELSE bissextile = 0
END FUNCTION

FUNCTION mois (num)
IF num = 2 THEN mois = 28
IF num = 1 OR num = 3 OR num = 5 OR num = 7 OR num = 8 OR num = 10 OR num = 12 THEN mois = 31
IF num = 4 OR num = 6 OR num = 9 OR num = 11 THEN mois = 30
END FUNCTION

0
macslan Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   4
 
re,
sa ne marche pas
0
amigo
 
bonsoir,

Programme revu et corrigé

Dis moi si cette fois c'est bon.

PRINT "Entrez la date de naissance jj/mm/aaaa : ";
INPUT date1$
PRINT
PRINT

jour1 = VAL(LEFT$(date1$, 2))
mois1 = VAL(MID$(date1$, 4, 2))
annee1 = VAL(RIGHT$(date1$, 4))

PRINT "Entrez l'heure de naissance : ";
INPUT heure1
PRINT
PRINT

date2$ = DATE$("mm/dd/yyyy")

mois2 = VAL(LEFT$(date2$, 2))
jour2 = VAL(MID$(date2$, 4, 2))
annee2 = VAL(RIGHT$(date2$, 4))

heure2 = VAL(TIME$())

IF annee1 < annee2 THEN

   FOR i = annee1 + 1 TO annee2 - 1
      jours = jours + 365 + bissextile(i)
   NEXT

   jours = jours + mois(mois1) - jour1
   IF mois1 = 2 THEN jours = jours + bissextile(annee1)

   FOR i = mois1 + 1 TO 12
      jours = jours + mois(i)
      IF i = 2 THEN jours = jours + bissextile(annee1)
   NEXT

   FOR i = 1 TO mois2 - 1
      jours = jours + mois(i)
      IF i = 2 THEN jours = jours + bissextile(annee2)
   NEXT

   jours = jours + jour2 - 1
   heures = 24 - heure1
   heures = heures + (jours * 24)
   heures = heures + heure2

END IF

IF annee1 = annee2 AND mois1 < mois2 THEN

   jours = mois(mois1) - jour1

   FOR i = mois1 + 1 TO mois2 - 1
      jours = jours + mois(i)
      IF i = 2 THEN jours = jours + bissextile(annee2)
   NEXT

   jours = jours + jour2 - 1
   heures = 24 - heure1
   heures = heures + (jours * 24)
   heures = heures + heure2

END IF

IF annee1 = annee2 AND mois1 = mois2 THEN

   jours = jour2 - jour1 - 1
   heures = 24 - heure1
   heures = heures + (jours * 24)
   heures = heures + heure2
   IF jour1 = jour2 THEN heures = heure2 - heure1

END IF
PRINT "Nous sommes le "; MID$(date2$, 4, 2) ; "/" ; LEFT$(date2$, 2) ; "/" ; annee2 ; "  à "; heure2 ;"h"
PRINT
PRINT "Il s'est écoulé "; heures; " heures depuis la naissance"

END

FUNCTION bissextile (annee)
IF ((annee MOD 4 = 0) AND (annee MOD 100 > 0)) OR (annee MOD 400 = 0) THEN bissextile = 1 ELSE bissextile = 0
END FUNCTION

FUNCTION mois (num)
IF num = 2 THEN mois = 28
IF num = 1 OR num = 3 OR num = 5 OR num = 7 OR num = 8 OR num = 10 OR num = 12 THEN mois = 31
IF num = 4 OR num = 6 OR num = 9 OR num = 11 THEN mois = 30
END FUNCTION
0
macslan Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   4
 
bonjour,
y a-t-il quelqu'un sa serai bien de même juste dire un truc svp c'est assez pressent merci de votre comprention
-1
macslan Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   4
 
salut,
donne voir un exemple stp je ne comprend pas télement
-1
macslan Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   4
 
je veut dire j'ai comprit mais pour calculer combien d'heure ecroule de tellle date
-1
amigo
 
Re,

Je ne comprends pas ce que tu veux. Je n'ai pas JustBasic mais QBasic, je pense que c'est à peu prés pareil.

Voilà ce que j'ai codé en QBasic

heure$ = TIME$
PRINT heure$

affichage-> 12:53:05

n% = INSTR(heure$, ":")
heure$ = LEFT$(heure$, n% - 1)
PRINT heure$

affichage-> 12

C'est pas ça que tu voulais? Alors donne un exemple.

A+.
-1
macslan Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   4
 
re,

j'ai un gars né a 12 h le 7 juin 2000 et je veut savoir combien d'heure se sont écrouler automtaiquement jusqu'a cette heure icii automatique
-1