2016-06-10 1 views
-1

Je cours une application dans laquelle je suis capable d'obtenir les temps requis, cependant quand j'essaye de déduire une valeur d'un autre il vient avec le message d'erreur indiquant la conversion de date le type ne peut pas arriver à timespan. Les variables que j'utilise sont indiquées ci-dessous:Conversion entre la date et l'heure en utilisant vb.net

Dim downtime As TimeSpan 
Dim uptime As TimeSpan 

Dim errortime As String() = lb_critical.SelectedItem.Split({" | "}, StringSplitOptions.RemoveEmptyEntries) 
Dim errortimefound As DateTime = Convert.ToDateTime(errortime(0).ToString()) 
downtime = DateTime.Now - errortimefound 
uptime = DateTime.Now - Convert.ToDateTime(downtime.ToString()) 

Quand je lance ce que j'obtiens l'erreur avec la variable temps d'arrêt.

Pour tenter de résoudre, j'ai essayé de convertir les variables à tous DateTime avant de les déduire, avait un coup d'oeil sur internet mais n'a pas réussi.

Quelqu'un pourrait-il identifier ce que je fais mal ici.

Merci Andrew pour l'amélioration du code, mais malheureusement je reçois toujours l'erreur. S'il vous plaît voir l'image ci-dessous:

enter image description here

+0

pourquoi vous voulez convertir laps de temps en temps de date? vérifier cela pour plus http://stackoverflow.com/questions/10276228/timespan-to-datetime-conversion – Abdul

+0

J'ai jeté un oeil à ce site déjà essayé la méthode mais cela n'a pas fonctionné. –

+1

'Il n'est pas très logique de convertir TimeSpan en DateTime' ou vice versa. La soustraction d'un DateTime d'un autre ne produira pas le premier message d'erreur mentionné. Nous ne pouvons pas voir ce code, mais il fait quelque chose d'autre pour causer cette erreur – Plutonix

Répondre

0

Voici un échantillon d'une méthode de travail:

Private Sub Button54_Click(sender As System.Object, e As System.EventArgs) Handles Button54.Click 
    getTimes("wibblewoffle") 
    getTimes("2016-06-10 08:55:12") 
End Sub 

Private Sub getTimes(foundTime As String) 

    Dim errortimefound As DateTime 

    If DateTime.TryParse(foundTime, errortimefound) Then 

     Dim downtime As TimeSpan = DateTime.Now.Subtract(errortimefound) 
     Dim uptime As TimeSpan = DateTime.Now.Subtract(Convert.ToDateTime(downtime.ToString())) 

     'do your magic here 

    Else 
     MessageBox.Show(String.Format("This is not a valid date time: =>[{0}]", foundTime)) 
    End If 

End Sub 
+0

Andrew s'il vous plaît jeter un oeil à l'image dans le message. Ce message d'erreur s'est produit en utilisant le code amélioré que vous m'avez fourni. C'est quelque chose à voir avec l'errortime, car votre code fonctionne si la date est entrée manuellement, mais ne fonctionne pas si elle est transmise avec une variable errortime. –

+0

Que contient exactement la chaîne que vous passez? Je suppose qu'il n'est pas compris comme une date-heure valide. Vous pouvez essayer DateTime.TryParse pour le valider. –

+0

J'ai un fichier html dont je lis les données et je remplis une zone de liste avec les données. Ensuite, je demande à l'utilisateur de sélectionner l'une des lignes de la liste et quand ils le font, je veux obtenir la date et l'heure de cette ligne. Les données ressemblent à 21/04/2016 08:53:44 | 21/04/2016 08:53:44 | frmManagement.LiquidInThisPositionToolStripMenuItem_Click(): Une exception s'est produite –