Datediff ne fonctionne pas

Résolu
dindinfb Messages postés 48 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 3 janvier 2015 - 22 sept. 2014 à 15:18
dindinfb Messages postés 48 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 3 janvier 2015 - 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
A voir également:

5 réponses

jordane45 Messages postés 38208 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 juin 2024 344
22 sept. 2014 à 15:47
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) 


0
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 ;
0
dindinfb Messages postés 48 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 3 janvier 2015
22 sept. 2014 à 22:46
Salut banana32 et jordane45
Je teste le code et je vous dirais s il fonctionne avec moi.
Merci

--
0
dindinfb Messages postés 48 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 3 janvier 2015
23 sept. 2014 à 08:02
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
--
0
jordane45 Messages postés 38208 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 juin 2024 344
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
0

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

Posez votre question
dindinfb Messages postés 48 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 3 janvier 2015
24 sept. 2014 à 07:28
Je remercie tout le monde.le code que j ai posté fonctionne parfaitement.
--
0
Rejoignez-nous