Le code en question est ci-dessous:
public static string ChangePersianDate(DateTime dateTime)
{
System.Globalization.GregorianCalendar PC = new System.Globalization.GregorianCalendar();
PC.CalendarType = System.Globalization.GregorianCalendarTypes.USEnglish;
return
PC.GetYear(dateTime).ToString()
+ "/"
+ PC.GetMonth(dateTime).ToString()
+ "/"
+ PC.GetDayOfMonth(dateTime).ToString()
+ ""
+ PC.GetHour(dateTime).ToString()
+ ":"
+ PC.GetMinute(dateTime).ToString()
+ ":"
+ PC.GetSecond(dateTime).ToString()
+ " "
????????????????
}
comment puis-je obtenir AM/PM à partir de la valeur dateTime
?
Que diriez-vous:
dateTime.ToString("tt", CultureInfo.InvariantCulture);
string.Format("{0:hh:mm:ss tt}", DateTime.Now)
Cela devrait vous donner la valeur de chaîne de l'heure. tt devrait ajouter le am/pm.
Vous pouvez également consulter le sujet connexe:
La DateTime
doit toujours figurer en interne dans le calendrier "américain" (grégorien). Donc si tu le fais
var str = dateTime.ToString(@"yyyy/MM/dd hh:mm:ss tt", new CultureInfo("en-US"));
vous devriez obtenir ce que vous voulez en moins de lignes.
Très simple en utilisant le format de chaîne
sur .ToSTring("") :
si vous utilisez "hh" - >> L’heure, en utilisant une horloge de 12 heures, du 01 au 12.
si vous utilisez "HH" - >> L’heure, en utilisant une horloge de 24 heures, du 00 au 23.
si vous ajoutez "tt" - >> Le désignateur Am/Pm.
exemple conversion de 23h12 à 23h12:
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, ce n’est pas tout ce dont vous avez besoin pour vous soucier de quelque chose d’autre, c’est le système Culture car le même code exécuté sur des fenêtres avec un autre langage, en particulier avec un langage de culture différent, produira un résultat différent avec le même code
l’exemple de windows paramétré en arabe sera affiché comme suit:
// 23:12 م
م signifie Soir (premier mètre de مساء).
dans un autre système, la culture dépend de l'option définie dans les options régionales et linguistiques de Windows. // 23:12 du s'affiche.
vous pouvez basculer entre différents formats sur le panneau de configuration de Windows sous Windows régional et langue -> format actuel (liste déroulante) et le modifier ... appliquez-le pour reconstruire (exécuter) votre application et regardez ce dont iam parle.
alors, qui puis-je forcer à montrer l'événement Am et Pm Words en anglais si> la culture du système actuel n'est pas définie en anglais?
facile en ajoutant simplement deux lignes: ->
la première étape, ajoutez using System.Globalization;
en plus de votre code
et en modifiant le code précédent pour qu'il ressemble à 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 => en utilisant le format anglais par défaut.
une autre question je veux avoir le pm être en arabe ou une langue spécifique, même si j'utilise des fenêtres réglées au format régional anglais (ou autre langue)?
Soution pour l'arabe Exemple:
DateTime d = new DateTime(1, 1, 1, 23, 12, 0);
var res = d.ToString("HH:mm tt", CultureInfo.CreateSpecificCulture("ar-AE"));
cela montrera // 23:12 م
événement si mon système est réglé sur un format de région anglaise. vous pouvez changer "ar-AE" si vous voulez un autre format de langue. il y a une liste de chaque langue et son format.
exemples:
ar ar-SA Arabic
ar-BH ar-BH Arabic (Bahrain)
ar-DZ ar-DZ Arabic (Algeria)
ar-EG ar-EG Arabic (Egypt)
big list...
faites-moi savoir si vous avez une autre question.
c'est assez simple
Date someDate = new DateTime();
string timeOfDay = someDate.ToString("hh:mm tt");
// hh - shows hour and mm - shows minute - tt - shows AM or PM
De: http://www.csharp-examples.net/string-format-datetime/
string.Format("{0:t tt}", datetime); // -> "P PM" or "A AM"
+ PC.GetHour(datetime) > 11 ? "pm" : "am"
Pour votre exemple, mais il existe de meilleures façons de formater date-heure.
Quelque chose comme bool isPM = GetHour() > 11
. Mais si vous souhaitez formater une date en chaîne, vous ne devriez pas avoir à le faire vous-même. Utilisez les formatage de la date pour cela.
Vous pouvez le tester de cette façon
Console.WriteLine(DateTime.Now.ToString("tt "));
Le résultat sera comme ceci:
AM
ou
PM
Voici un moyen plus simple d’écrire le format d’heure (hh:mm:ss tt)
et de les afficher séparément si vous le souhaitez.
string time = DateTime.Now.Hour.ToString("00") + ":" + DateTime.Now.Minute.ToString("00") + ":" + DateTime.Now.Second.ToString("00") + DateTime.Now.ToString(" tt");
ou tout simplement:
DateTime.Now.ToString("hh:mm:ss tt")