Kod, o którym mowa, znajduje się poniżej:
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()
+ " "
????????????????
}
Jak mogę uzyskać AM / PM od dateTime
wartości?
c#
.net
datetime
datetime-format
gregorian-calendar
SilverLight
źródło
źródło
DateTime
niż to. Zobacz msdn.microsoft.com/en-us/library/8kb3ddd4.aspxdateTime.ToString("tt");
Odpowiedzi:
Co powiesz na:
źródło
CultureInfo.InvariantCulture
ToString("tt", System.Globalization.CultureInfo.InvariantCulture)
DateTime.Now.AddHours(12).ToString("tt", CultureInfo.InvariantCulture)
To powinno dać ci wartość ciągu czasu. tt powinien dołączyć am / pm.
Możesz także spojrzeć na pokrewny temat:
Jak uzyskać aktualną porę dnia?
źródło
hh
ponieważ twoja obecna reprezentacja wychodzi za 24 godziny zDateTime
Powinny zawsze być wewnętrznie w „American” (gregoriańskiego) kalendarza. Jeśli takpowinieneś dostać to, czego chcesz w wielu mniej liniach.
źródło
Bardzo prosty w użyciu formatu ciągu
na
.ToSTring("") :
jeśli użyjesz „hh” - >> Godzina, używając 12-godzinnego zegara od 01 do 12.
jeśli użyjesz „GG” - >> Godzina, przy użyciu 24-godzinnego zegara od 00 do 23.
jeśli dodasz „tt” - >> Desygnator Am / Pm.
przykład konwersji z 23:12 na 11:12 Pm:
poczekaj sekundę, to nie wszystko, o co musisz dbać o coś innego to Kultura systemowa, ponieważ ten sam kod wykonywany w oknach z innym językiem, szczególnie z różnymi językami Język wygeneruje inny wynik z tym samym kodem
przykład okna ustawionego na arabską kulturę języka pokaże następująco:
// 23:12 م
م oznacza wieczór (pierwsza litera مساء).
w innym systemie kultura zależy od tego, co jest ustawione w opcjach regionalnych i językowych systemu Windows, wyświetli // 23:12 du.
możesz przełączać się między różnymi formatami w panelu sterowania Windows pod Windows regionalnym i językowym -> obecny format (combobox) i zmienić ... zastosuj to przebuduj (uruchom) aplikację i zobacz, o czym mówię.
łatwe, po prostu dodając dwie linie: ->
dodaj pierwszy krok
using System.Globalization;
na górze kodui modyfikowanie poprzedniego kodu, aby wyglądał tak:
InvariantCulture => przy użyciu domyślnego formatu angielskiego.
inne pytanie Chcę, aby pm było w języku arabskim lub określonym języku, nawet jeśli używam systemu Windows ustawionego na angielski (lub inny język) format regionalny?
Soution na przykład arabski:
pokaże // 23:12 م
zdarzenie, jeśli mój system jest ustawiony na format regionu angielskiego. możesz zmienić „ar-AE”, jeśli chcesz wybrać inny format językowy. istnieje lista każdego języka i jego formatu.
przykłady:
daj mi znać, jeśli masz inne pytanie.
źródło
Wiem, że może się to wydawać bardzo późno ... jednak może pomóc komuś tam
Chciałem uzyskać część AM rano, więc skorzystałem z tego, co poradził Andy:
Użyłem tej części do zbudowania ścieżki do zapisywania moich plików. Zbudowałem moje założenia, że dostanę rano lub po południu i nic więcej !!
jednak kiedy użyłem komputera, którego kultura nie jest angielska .. (w moim przypadku ARABIC) .. moja aplikacja nie powiodła się, ponieważ format „tt” zwrócił coś nowego, a nie AM ani PM (م lub ص) ..
Rozwiązaniem tego problemu było zignorowanie kultury poprzez dodanie drugiego argumentu w następujący sposób:
.. oczywiście musisz dodać: using System.Globalization; na górze pliku ur mam nadzieję, że to komuś pomoże :)
źródło
to całkiem proste
źródło
Na przykład, ale istnieją lepsze sposoby formatowania daty i godziny.
źródło
Od: http://www.csharp-examples.net/string-format-datetime/
źródło
Coś jak
bool isPM = GetHour() > 11
. Ale jeśli chcesz sformatować datę w ciągu, nie musisz tego robić sam. Użyj do tego funkcji formatowania daty .źródło
Możesz to przetestować w ten sposób
Wynik będzie taki:
lub
źródło
Now
Oto łatwiejszy sposób na napisanie formatu godziny
(hh:mm:ss tt)
i wyświetlenie go osobno, jeśli chcesz.lub po prostu:
źródło
@ Odpowiedź Andy'ego jest w porządku. Ale jeśli chcesz pokazać czas bez formatu 24-godzinnego, możesz postępować w ten sposób
Następnie powinieneś uzyskać czas jak „10:35:20 PM” lub „10:35:20 AM”
źródło
źródło
Oto przykładowy kod:
źródło
ToLongTimeString()
zwraca wartość na podstawie bieżącej kultury wątków. I w przeciwieństwie do niektórych podobnych rozwiązań podanych w innych odpowiedziach, ten kod nie będzie nawet działał, jeśli ustawisz kulturę wątków naInvariantCulture
, ponieważ kultura niezmiennicza -LongTimePattern
która determinuje wartość zwracanąToLongTimeString()
- jestHH:mm:ss
.