Datediff ne fonctionne pas [Résolu]

dindinfb 48 Messages postés mardi 24 mars 2009Date d'inscription 3 janvier 2015 Dernière intervention - 22 sept. 2014 à 15:18 - Dernière réponse : dindinfb 48 Messages postés mardi 24 mars 2009Date d'inscription 3 janvier 2015 Dernière intervention
- 24 sept. 2014 à 07:28
Bonjour
J'ai un label qui affiche l'heure système en temps réel sous format HH :mm :ss et un 6 autre label qui affichent d'autres horaires par ex : 06 :00 /07 :30 / 13 :30 / 16 :50 / 19 :45 / 20 :55 (donc format HH :mm)
Mon souci c'est cette erreur : quand je soustraire l'heure système du l'autre label il m'affiche Date2 ne peut pas être converti en Date.
Voila le code qui ne fonctionne pas. Pour info Secheure est une fonction qui converti le secondes en hh :mm :ss.
Private Sub Timer4_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer4.Tick
Dim s6, n6 As String
If LabelNow.Text > ChuruqHeure.Text and LabelNow.Text < DohrHeure.Text Then
s6 = DateDiff("s", ChuruqHeure.Text, LabelNow.Text)
n6 = secheure(s6)
Label21.Text = "Churuq depuis " & n6'objectif calculer le temps passé depuis le Churuq(07 :30 )
ElseIf LabelNow.Text < ChuruqHeure.Text and LabelNow.Text > FajrHeure.Text Then
s6 = DateDiff("s", LabelNow.Text, ChuruqHeure.Text)
n6 = secheure(s6)
Label21.Text = "Il reste au Churuq " & n6'objectif calculer le temps restant jusqu'au Dohr.(13 :30)
End If

`LabelNow.Text= l'heure système en temps réel sous format HH :mm :ss
End Sub

--
merci d'avance
Afficher la suite 

Votre réponse

6 réponses

jordane45 22119 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 août 2018 Dernière intervention - 22 sept. 2014 à 15:47
0
Merci
Bonjour,

DateDiff attend comme paramètres .. des dates... pas du texte
http://msdn.microsoft.com/fr-fr/library/b5xbyt6f%28v=vs.90%29.aspx

Il te faut convertir le contenu de tes labels en DATES.
Regarde du côté de :http://msdn.microsoft.com/en-us/library/1k1skd40%28v=VS.90%29.aspx#Y114
Dim dt As MaDateTime = DateTime.Parse(TextBox1.Text) 


Commenter la réponse de jordane45
0
Merci
Salut,

Fais plutôt avec des TimeSpan c'est bien plus simple. Voici un exemple à tester et à étudier dans un projet vierge :
Option Strict On
Public Class Form1
Delegate Sub Delegatetmr()
Dim labels As New List(Of Label)
Dim tmr As New Timers.Timer(1000)

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'intégration des labels au formulaire
For x As Integer = 0 To 3
labels.Add(New Label() With {.Parent = Me, .Top = x * 30})
Next
'abonnement a l'evenement elapsed
AddHandler tmr.Elapsed, AddressOf tmr_Elapsed
'demarrage timer
tmr.Start()
End Sub

Private Sub tmr_Elapsed(ByVal sender As Object, ByVal e As Timers.ElapsedEventArgs)
If Me.InvokeRequired Then
'invocation du délégué
Me.Invoke(New Delegatetmr(AddressOf tmr_ThreadSafe))
End If
End Sub

Private Sub tmr_ThreadSafe()
'heure de référence (maintenant)
Dim ref As Date = DateTime.Now
'affichage
labels(0).Text = ref.ToLongTimeString
'ajout de 6 heures
labels(1).Text = (ref + New TimeSpan(6, 0, 0)).ToLongTimeString
'ajout de 3 heures et 30 minutes
labels(2).Text = (ref + New TimeSpan(3, 30, 0)).ToLongTimeString
'retrait de 4 heures 15
labels(3).Text = (ref - New TimeSpan(4, 15, 0)).ToLongTimeString

End Sub
End Class

Bonne prog.
Un salut a jordane45 ;
Commenter la réponse de banana32
dindinfb 48 Messages postés mardi 24 mars 2009Date d'inscription 3 janvier 2015 Dernière intervention - 22 sept. 2014 à 22:46
0
Merci
Salut banana32 et jordane45
Je teste le code et je vous dirais s il fonctionne avec moi.
Merci

--
Commenter la réponse de dindinfb
dindinfb 48 Messages postés mardi 24 mars 2009Date d'inscription 3 janvier 2015 Dernière intervention - 23 sept. 2014 à 08:02
0
Merci
merci à tous
après qq recherche j'ai trouvé un autre que pour le moment fonctionne avec les labels que j'ai . voilà le code qui sera peut être utile pour qq un d'autre .

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Timer1.Start()

End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Label1.Text = Format(Now, "hh:mm:ss")
Dim Difference As TimeSpan = TimeSpan.Parse(Label1.Text) - TimeSpan.Parse(Label2.Text)
If TimeSpan.Parse(Label1.Text) < TimeSpan.Parse(Label2.Text) Then
Difference = TimeSpan.Parse("24") + Difference
End If
Label3.Text = "Depuis " & Strings.Right("0" & Difference.Hours, 2) & " h " & Strings.Right("0" & Difference.Minutes, 2) & " mn " & Strings.Right("0" & Difference.Seconds, 2) & " S "
End Sub


End Class

pensez à rajouter 3 label sur le form 1
--
jordane45 22119 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 août 2018 Dernière intervention - 23 sept. 2014 à 12:17
Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

Cordialement,
Jordane
Commenter la réponse de dindinfb
dindinfb 48 Messages postés mardi 24 mars 2009Date d'inscription 3 janvier 2015 Dernière intervention - 24 sept. 2014 à 07:28
0
Merci
Je remercie tout le monde.le code que j ai posté fonctionne parfaitement.
--
Commenter la réponse de dindinfb

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.