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 p>
0800 => 8h00 p>
2317 => 11h17 p>
3 Réponses :
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));
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.
Utilisez DateTime.tryparse code> avec la chaîne de format que vous voulez. p>
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». P>
DateTime dt = DateTime.ParseExact("0800", "HHmm", CultureInfo.InvariantCulture);
string timestring = dt.ToString("h:mm tt");
See documentation for format codes.
Qu'entendez-vous par «l'approche fastidieuse»? DateTime.ParsExact () avec un fournisseur de format personnalisé?
Var Time = DateTime.ParsExact ("0800", "HHMM", cultureInfo.invarianTculture);