0
votes

Comment puis-je soustraire deux fois qui sont entrés dans deux maskedtextbox et montrez-le en troisième masquedtextbox?

Je ne peux pas convertir le texte (dans maskedtextbox ) vers un DateTime . Par exemple, j'ai ces moments dans les masques: 16:30 , 6:30 Je veux montrer en troisième masqué 10:00 Voici mes codes: j'écris une méthode

J'ai une erreur en ligne: Timespan T L'erreur est la suivante: la chaîne d'entrée n'était pas dans un format correct

annulation publique A (MaskedTextBox K, MaskedTextBox K1, MaskedTextBox K2, Étiquette K3) { chaîne [] heure = k.text.split (':'); essayer { int h = int.parse (heure [0] .tostring (); int m = int.parse (heure [1] .tostring (); xxx


3 commentaires

Pouvez-vous montrer votre code?


Essayez un Timespan plutôt qu'un DateTime , en supposant que les deux fois sont le même jour


Voulez-vous toujours montrer un nombre positif ou est une fois considéré comme «d'abord» et l'autre devrait être soustrait de celui-ci, même s'il s'agit d'un plus grand nombre?


3 Réponses :


1
votes

Vous travaillez réellement avec tispan (pas datetime ); Vous devriez PAR analysez , faites arithmétiques et, enfin, formatez le résultat en tant que chaîne : xxx


6 commentaires

Chère . Les temps (comme 6h30) doivent entrer par la personne dans MaskedTextBox. Nous pouvons écrire des chiffres dans nos codes


@MOHSENBAHAR: Eh bien, nous pouvons facilement mettre somemaskedbox.text au lieu de valeurs (démo)


Le fil d'alimentation n'était pas au bon format.' (dans la première ligne (à gauche))


@MOHSENBAHAR: Quelles sont les chaînes que vous mettez dans maskedbox ? Pourriez-vous mettre un points d'arrêt et inspecter maskedbox1.text ? Vous voudrez peut-être vous débarrasser des espaces bleus, du rembourrage, etc.


mon maskedtexbos est défini sur l'Europe Time (11h30) Cette boîte remplir par l'utilisateur


@MOHSENBAHAR: Je vois; Cependant, il semble que la chaîne réelle n'est pas exactement "11:30" mais contient des caractères supplémentaires (disons, blouses) Quelque chose comme "11:30" . Les espaces de pointe / de fin peuvent être supprimés par simple .trim () ; Si la chaîne contient des espaces blanches en elle-même, ils peuvent être supprimés par Linq: string.concat (maskedbox1.text.Où (C => C! = Char.iswitpace (C)))



0
votes

Vous pouvez essayer de suivre les codes suivants:

'' ' p>

        var timeString1 = "16:30";
        var timeString2 = "6:30";

        //Make sure the parse input string match the HH:mm format
        timeString1 = timeString1.PadLeft(5, '0');
        timeString2 = timeString2.PadLeft(5, '0');

        var time1 = DateTime.ParseExact(timeString1, "HH:mm", null);
        var time2 = DateTime.ParseExact(timeString2, "HH:mm", null);
        var timeSpan12 = time1 - time2;

        var result = $"{timeSpan12.Hours:d2}:{timeSpan12.Minutes:d2}";
        Console.WriteLine(result);//10:30


0 commentaires

0
votes

Je trouve bon moyen:

Public statique Long Time (String t) { revenir (long.parse (T.Substring (0,2)) * tispan.ticksperhour) + (Long.Parse (T.Substring (3,2)) * Timespan.Ticksperminute);

}

NOCAL PUBLIQUE Calculer (MaskedTextBox A, MaskedTextBox B, MaskedTextBox C) { xxx


0 commentaires