Der fragliche Code ist unten:
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()
+ " "
????????????????
}
Wie kann ich die AM / PM aus dem dateTime
Wert erhalten?
c#
.net
datetime
datetime-format
gregorian-calendar
SilverLight
quelle
quelle
DateTime
. Siehe msdn.microsoft.com/en-us/library/8kb3ddd4.aspxdateTime.ToString("tt");
Antworten:
Wie wäre es mit:
quelle
CultureInfo.InvariantCulture
ToString("tt", System.Globalization.CultureInfo.InvariantCulture)
DateTime.Now.AddHours(12).ToString("tt", CultureInfo.InvariantCulture)
Dies sollte Ihnen den Zeichenfolgenwert der Zeit geben. Es sollte am / pm angehängt werden.
Sie können sich auch das verwandte Thema ansehen:
Wie erhält man die aktuelle Tageszeit?
quelle
hh
da Ihre aktuelle Darstellung in 24-Stunden-Zeit mit morgens und abends ausgegeben wird, was ein bisschen sinnlos istDas
DateTime
sollte immer intern im "amerikanischen" (Gregorianischen) Kalender stehen. Also wenn du es tustSie sollten in viel weniger Zeilen bekommen, was Sie wollen.
quelle
Sehr einfach mit dem String-Format
auf
.ToSTring("") :
Wenn Sie "hh" - >> Die Stunde verwenden, verwenden Sie eine 12-Stunden-Uhr von 01 bis 12.
Wenn Sie "HH" verwenden - >> Die Stunde mit einer 24-Stunden-Uhr von 00 bis 23.
Wenn Sie "tt" hinzufügen - >> Der Am / Pm-Bezeichner.
Beispiel Konvertierung von 23:12 auf 23:12 Uhr:
Warten Sie eine Sekunde, das ist nicht alles, was Sie brauchen, um sich um etwas anderes zu kümmern, ist die Systemkultur, da der gleiche Code, der unter Windows mit einer anderen Sprache ausgeführt wird, insbesondere mit einer anderen Kultursprache, ein anderes Ergebnis mit demselben Code erzeugt
Ein Beispiel für Fenster, die auf arabische Sprachkultur eingestellt sind, wird folgendermaßen angezeigt:
// 23:12 م
م bedeutet Abend (erster Brief von مساء).
In einer anderen Systemkultur hängt es davon ab, was in der Windows-Regional- und Sprachoption festgelegt ist. Es wird // 23:12 du angezeigt.
Sie können in der Windows-Systemsteuerung unter Windows Regional und Sprache zwischen verschiedenen Formaten wechseln -> aktuelles Format (Combobox) und ändern ... anwenden. Führen Sie eine Neuerstellung (Ausführung) Ihrer App durch und beobachten Sie, worüber ich spreche.
einfach durch Hinzufügen von zwei Zeilen: ->
Im ersten Schritt fügen Sie
using System.Globalization;
Ihren Code hinzuund Ändern des vorherigen Codes wie folgt:
InvariantCulture => im englischen Standardformat.
Eine andere Frage: Ich möchte, dass die Uhr in Arabisch oder einer bestimmten Sprache ist, auch wenn ich Fenster verwende, die auf das regionale Format Englisch (oder eine andere Sprache) eingestellt sind.
Soution für Arabisch Beispiel:
Dies zeigt // 23:12 م
Ereignis, wenn mein System auf ein englisches Regionsformat eingestellt ist. Sie können "ar-AE" ändern, wenn Sie ein anderes Sprachformat verwenden möchten. Es gibt eine Liste jeder Sprache und ihres Formats.
Beispiele:
Lassen Sie mich wissen, wenn Sie eine andere Frage haben.
quelle
Ich weiß, dass dies extrem spät zu sein scheint. Es kann jedoch jemandem da draußen helfen
Ich wollte den AM PM-Teil des Termins erhalten, also habe ich das verwendet, was Andy empfohlen hat:
Ich habe diesen Teil verwendet, um einen Pfad zum Speichern meiner Dateien zu erstellen. Ich habe meine Annahmen getroffen, dass ich entweder AM oder PM und sonst nichts bekomme !!
Als ich jedoch einen PC verwendete, dessen Kultur nicht Englisch ist. (in meinem Fall ARABISCH). Meine Anwendung schlug fehl, da das Format "tt" etwas Neues zurückgab, weder AM noch PM (م oder ص).
Die Lösung bestand darin, die Kultur zu ignorieren, indem das zweite Argument wie folgt hinzugefügt wurde:
.. natürlich müssen Sie hinzufügen: using System.Globalization; Ich hoffe, das hilft jemandem :)
quelle
es ist ziemlich einfach
quelle
Für Ihr Beispiel gibt es jedoch bessere Möglichkeiten, datetime zu formatieren.
quelle
Von: http://www.csharp-examples.net/string-format-datetime/
quelle
So etwas wie
bool isPM = GetHour() > 11
. Wenn Sie jedoch ein Datum in eine Zeichenfolge formatieren möchten, sollten Sie dies nicht selbst tun müssen. Verwenden Sie dazu die Datumsformatierungsfunktionen .quelle
Sie können es auf diese Weise testen
Die Ausgabe sieht folgendermaßen aus:
oder
quelle
Now
Hier ist eine einfachere Möglichkeit, das Zeitformat zu schreiben
(hh:mm:ss tt)
und es auf Wunsch separat anzuzeigen.oder einfach nur:
quelle
@ Andys Antwort ist Okay. Wenn Sie jedoch Zeit ohne 24-Stunden-Format anzeigen möchten, können Sie folgendermaßen vorgehen
Danach sollten Sie Zeit wie "10:35:20 PM" oder "10:35:20 AM" bekommen.
quelle
quelle
Hier ist ein Beispielcode:
quelle
ToLongTimeString()
Gibt einen Wert zurück, der auf der aktuellen Thread-Kultur basiert. Und im Gegensatz zu einigen ähnlichen Lösungen, die in anderen Antworten angegeben sind, funktioniert dieser Code nicht einmal, wenn Sie die Thread-Kultur auf einstellenInvariantCulture
, da die invariante KulturLongTimePattern
- die den Rückgabewert von bestimmtToLongTimeString()
- istHH:mm:ss
.