6
votes

Comment convertir un nombre décimal en temps ou inversement

Voici un exemple

            if 8.30 is there it should be 8 hours 30 minute
            if 8 hour 20 minutes  then 8.20  

           Please tell whether it is possible ? if yes
           how ?      

c#

5 commentaires

Qu'est-ce qui sera 8.90 selon vous?


genre de semblable à Stackoverflow.com/questions/ 1345504 / ...


Je suis honnêtement curieux, pourquoi voudriez-vous jamais veux faire cela? Si vous essayez d'utiliser un nombre décimal pour stocker une valeur temporelle, puis la convertissez correctement en utilisant 8.5 = 8h 30m. Si vous essayez d'analyser une chaîne dans le format "HH.MM", utilisez une chaîne de format personnalisée avec la méthode DateTime.Parse.


@Christian: certaines entreprises suivent une présence des employés dans des incréments de 1/10 heure. Espérons que rien n'emploie d'ingénieurs logiciels.


@ Scientifique: intéressant, je n'avais pas entendu parler de cette pratique, merci. Je suis d'accord avec votre réponse ci-dessous.


6 Réponses :


11
votes

Lorsque les gens parlent d'heures décimales, ils signifient généralement 0,1 = 6 minutes.

Donc, la formule correcte à convertir 8.3 serait:

8 heures + 3 * 6 minutes = 8:18

Pour convertir 8:20 en décimal, ce serait:

8 + 20/6 = 8.333333 (probablement rond à 8,3)


5 commentaires

Ce n'est pas ce que l'OP a demandé - il a spécifié 8,20 = 8 heures et 20 minutes.


Oui, mais la question est-elle tout à fait des États membres de la nécessité. Il n'y a pas de cartographie logique des heures décimales aux minutes qui comprend: 20 = .2 et: 30 = .3. Ma réponse reflète cette probabilité.


Cela ne représenterait pas non plus 5,11 qui donneraient 5:66 au lieu de 5:06


La conversion 8 + 20/6 = 8.333333 est un peu trompeuse en raison du changement décimal de lieu requis pour les minutes. Peut-être que 8 + (20/60) = 8.333333 ou 8 heures et 20/6 = 3.33333 donnant 8.333333 serait plus clair.


Cet aspect est mieux expliqué dans Stackoverflow.com/Questtions/5697970/...



3
votes

S'il est toujours séparé avec . strong> et vous le souhaitez pour afficher, utilisez-le simplement simplement:

var ar="8.30".split(new[]{'.'});

Console.Write("{0} hours {1} minutes",ar[0], ar[1]);


0 commentaires

1
votes

Voici quelques méthodes d'extension (pour DateTime et Decimal) qui font le travail: xxx

J'ai testé cela très rapidement dans une page Web ASP.NET (j'ai eu un projet Web ouvert à Le temps) Utilisation des éléments suivants dans une nouvelle page vierge, et cela semblait fonctionner un régal: xxx


0 commentaires

0
votes

selon Rob mais substitut xxx

comme xxx

pas de cordes ni de confiance à la culture actuelle (l'hypothèse que le "." est le point décimal)


0 commentaires

2
votes

Mon approche ressemblerait à quelque chose comme ça. (Ceci est ruby, vous devrez donc le convertir vous-même, mais la logique est ce qui est important ici)

     | entered_time   | expected_results|
      | "5.6"         | "5:36"          |
      | "5.9"         | "5:54"          |
      | "5.09"        | "5:05"          |
      | "5.0"         | "5"          |
      | "5.00"        | "5"          |
      | "5.015"       | "5:01"          |
      | "6.03"        | "6:02"          |
      | "5.30"        | "5:18"          |
      | "4.2"         | "4:12"        |
      | "8.3"     | "8:18"           |
      | "8.33"    | "8:20"            |
      | "105.5"       | "105:30"        |
      | "16.7"        | "16:42"         |
      | "Abc"         | "Abc"           |
      | "5:36"    | "5:36"              | 
      | "5:44"    | "5:44"              |   


0 commentaires

0
votes

Comment puis-je analyser le txtduration.text en une valeur décimale? XXX


0 commentaires