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 le AM / PM de la dateTime
valeur?
c#
.net
datetime
datetime-format
gregorian-calendar
SilverLight
la source
la source
DateTime
que cela. Voir msdn.microsoft.com/en-us/library/8kb3ddd4.aspxdateTime.ToString("tt");
Réponses:
Que diriez-vous:
la source
CultureInfo.InvariantCulture
ToString("tt", System.Globalization.CultureInfo.InvariantCulture)
DateTime.Now.AddHours(12).ToString("tt", CultureInfo.InvariantCulture)
Cela devrait vous donner la valeur de chaîne de l'heure. tt devrait annexer le am / pm.
Vous pouvez également consulter le sujet associé:
Comment obtenez-vous l'heure actuelle?
la source
hh
car votre représentation actuelle sort en 24 heures avec am et pm, ce qui est un peu inutileLe
DateTime
devrait toujours être en interne dans le calendrier "américain" (grégorien). Donc si tu le faisvous devriez obtenir ce que vous voulez en beaucoup moins de lignes.
la source
Très simple en utilisant le format chaîne
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'indicateur Am / Pm.
exemple de conversion de 23h12 à 23h12:
attendez une seconde ce n'est pas tout ce dont vous avez besoin pour vous soucier d'autre chose est le système Culture car le même code exécuté sur des fenêtres avec un autre langage spécialement avec un langage de culture différent générera un résultat différent avec le même code
exemple de fenêtres réglées sur la culture de langue arabe montrera comme ça:
// 23:12 م
م signifie Soir (premier leter de مساء).
dans un autre système, la culture dépend de ce qui est défini sur l'option régionale et linguistique de windows, il affichera // 23:12 du.
vous pouvez changer entre différents formats sur le panneau de configuration de Windows sous windows régional et langue -> format actuel (combobox) et changer ... appliquez-le faites une reconstruction (exécutez) de votre application et regardez ce dont je parle.
facile simplement en ajoutant deux lignes: ->
la première étape ajouter
using System.Globalization;
au-dessus de votre codeet en modifiant le code précédent pour qu'il ressemble à ceci:
InvariantCulture => en utilisant le 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 des fenêtres définies au format régional anglais (ou autre langue)?
Soution pour l'arabe Exemple:
cela montrera // 23:12 م
événement si mon système est défini sur un format de région anglais. 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:
faites-moi savoir si vous avez une autre question.
la source
Je sais que cela peut sembler extrêmement tardif .. mais cela peut aider quelqu'un
Je voulais obtenir la partie AM PM de la date, alors j'ai utilisé ce qu'Andy a conseillé:
J'ai utilisé cette partie pour construire un chemin pour enregistrer mes fichiers .. J'ai construit mes hypothèses que j'obtiendrai AM ou PM et rien d'autre !!
cependant quand j'ai utilisé un PC dont sa culture n'est pas anglaise .. (dans mon cas ARABE) .. mon application a échoué car le format "tt" a renvoyé quelque chose de nouveau pas AM ni PM (م ou ص) ..
Le correctif a donc été d'ignorer la culture en ajoutant le deuxième argument comme suit:
.. bien sûr, vous devez ajouter: using System.Globalization; au-dessus du fichier ur j'espère que cela aidera quelqu'un :)
la source
c'est assez simple
la source
Pour votre exemple, mais il existe de meilleures façons de formater datetime.
la source
De: http://www.csharp-examples.net/string-format-datetime/
la source
Quelque chose comme
bool isPM = GetHour() > 11
. Mais si vous souhaitez formater une date en une chaîne, vous ne devriez pas avoir à le faire vous-même. Utilisez les fonctions de formatage de la date pour cela.la source
Vous pouvez le tester de cette façon
La sortie sera comme ceci:
ou
la source
Now
Voici un moyen plus simple d'écrire le format de l'heure
(hh:mm:ss tt)
et de les afficher séparément si vous le souhaitez.ou tout simplement:
la source
@ La réponse d'Andy est OK. Mais si vous voulez afficher l'heure sans format 24 heures, vous pouvez suivre comme ça
Après cela, vous devriez avoir du temps comme "10:35:20 PM" ou "10:35:20 AM"
la source
la source
Voici un exemple de code:
la source
ToLongTimeString()
renvoie une valeur basée sur la culture de thread actuelle. Et contrairement à certaines des solutions similaires données dans d'autres réponses, ce code ne fonctionnera même pas si vous définissez la culture de thread surInvariantCulture
, car la culture invarianteLongTimePattern
- qui détermine la valeur de retour deToLongTimeString()
- estHH:mm:ss
.