Très simple en utilisant le format chaîne de caractères
sur .ToSTring("") :
-
si vous utilisez "hh" ->> L'heure, en utilisant une horloge de 12 heures de 01 à 12.
-
si vous utilisez "HH" ->> L'heure, en utilisant une horloge de 24 heures de 00 à 23.
-
si vous ajoutez "tt" ->> L'indicatif Am/Pm.
exemple de conversion de 23:12 à 11:12 Pm :
DateTime d = new DateTime(1, 1, 1, 23, 12, 0);
var res = d.ToString("hh:mm tt"); // this show 11:12 Pm
var res2 = d.ToString("HH:mm"); // this show 23:12
Console.WriteLine(res);
Console.WriteLine(res2);
Console.Read();
attendez une seconde, il y a un piège, le système Culture ! !, le même code exécuté sur Windows réglé sur une langue différente surtout avec une langue de culture différente, générera un résultat différent.
par exemple, dans Windows réglé sur la langue arabe, le résultat sera le suivant :
// 23:12 م
م signifie Soirée (première lettre de مساء) .
sous Windows réglé sur la langue allemande, je pense qu'il affichera // 23:12 du.
vous pouvez changer de format dans le panneau de configuration de Windows sous Windows regional and language -> current format (combobox) et changer... appliquez-le, faites une reconstruction (execute) de votre application et regardez ce dont je parle.
Comment pouvez-vous forcer l'affichage des préfixes Am et Pm en anglais si la culture du système actuel n'est pas en anglais ?
facile en ajoutant simplement deux lignes ->
la première étape ajoute using System.Globalization;
au dessus de votre code
et modifier le code précédent pour qu'il soit comme ceci :
DateTime d = new DateTime(1, 1, 1, 23, 12, 0);
var res = d.ToString("HH:mm tt", CultureInfo.InvariantCulture); // this show 11:12 Pm
InvariantCulture => utilisation du format anglais par défaut.
Une autre question : je veux que le pm soit en arabe ou dans une langue spécifique, même si j'utilise Windows réglé sur le format régional anglais (ou autre langue) ?
Solution pour arabe Exemple :
DateTime d = new DateTime(1, 1, 1, 23, 12, 0);
var res = d.ToString("HH:mm tt", CultureInfo.CreateSpecificCulture("ar-AE"));
this will show // 23:12 م
événement si mon système est réglé sur le format de la région anglaise. vous pouvez changer "ar-AE" si vous voulez un autre format de langue. il y a une liste pour chaque langue.
exemples : ar ar-SA Arabe ar-BH ar-BH Arabe (Bahreïn) ar-DZ ar-DZ Arabe (Algérie) ar-EG ar-EG Arabe (Egypte) .....