8
votes

Convertir des nombres en temps?

Y a-t-il un moyen slick de convertir des nombres simples (temps de l'armée inclus) à un format horaire (AM, PM Format)? Je peux faire l'approche fastidieuse, mais je me demandais simplement s'il y avait une autre façon

0800 => 8h00

2317 => 11h17


2 commentaires

Qu'entendez-vous par «l'approche fastidieuse»? DateTime.ParsExact () avec un fournisseur de format personnalisé?


Var Time = DateTime.ParsExact ("0800", "HHMM", cultureInfo.invarianTculture);


3 Réponses :


1
votes

J'espère que cela vous indique dans la bonne direction:

    string time = "0800";
    DateTime dt = DateTime.ParseExact(string.Format("{0}:{1}", time.Substring(0, 2), time.Substring(2, 2)), "HH:mm", CultureInfo.InvariantCulture);
    MessageBox.Show(string.Format("{0:h:mm tt}", dt));

    time = "2345";
    dt = DateTime.ParseExact(string.Format("{0}:{1}", time.Substring(0, 2), time.Substring(2, 2)), "HH:mm", CultureInfo.InvariantCulture);
    MessageBox.Show(string.Format("{0:h:mm tt}", dt));


3 commentaires

Pourquoi reformatez-vous la chaîne au format HH: MM et non au format HHMM directement?


Bonne question. Parce que je l'ai écrit vite et que je n'y pensais pas. :)


@Robaticus Et si l'heure de saisie était "23" (00:23)? Ensuite, votre code lancerait une exception.



1
votes

Utilisez DateTime.tryparse avec la chaîne de format que vous voulez.

Si vous pouvez accepter plusieurs formats, vous devrez appeler chacun à son tour jusqu'à ce que vous trouviez celui qui correspond - que je suppose est ce que vous entendez par «l'approche fastidieuse».


0 commentaires

15
votes
    DateTime dt = DateTime.ParseExact("0800", "HHmm", CultureInfo.InvariantCulture);
    string timestring = dt.ToString("h:mm tt");
See documentation for format codes.

0 commentaires