Jak uzyskać wartość AM / PM z DateTime?

Powyższy kod 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 z wartości dateTime?

Author: Brian Webster, 2011-10-24

13 answers

A może:

dateTime.ToString("tt", CultureInfo.InvariantCulture);
 306
Author: Andy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-24 11:41:40
string.Format("{0:hh:mm:ss tt}", DateTime.Now)

To powinno dać ci wartość łańcuchową czasu. tt powinien dołączyć am / pm.

Możesz również spojrzeć na pokrewny temat:

Jak uzyskać aktualną porę dnia?

 91
Author: XikiryoX,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:37

{[1] } powinny być zawsze wewnętrznie w "amerykańskim" (gregoriańskim) kalendarzu. Więc jeśli zrobisz

var str = dateTime.ToString(@"yyyy/MM/dd hh:mm:ss tt", new CultureInfo("en-US"));

Powinieneś dostać to, czego chcesz w wielu mniej linijkach.

 38
Author: xanatos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-24 12:10:41

Bardzo proste przy użyciu formatu string

On .ToSTring("") :

  • Jeśli używasz "hh" - > > godziny, używając 12-godzinnego zegara od 01 do 12.

  • Jeśli używasz "HH" - > > godziny, używając 24-godzinnego zegara od 00 do 23.

  • Jeśli dodasz" tt " - > > znacznik Am/Pm.

Exemple konwersja z 23:12 na 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();

Poczekaj chwilę, to nie wszystko, czego potrzebujesz, aby dbać o coś innego, to kultura systemowa, ponieważ ten sam kod wykonywany w systemie windows z innym językiem especialy with difrent culture langage wygeneruje difrent result o tym samym kodzie

Exemple systemu Windows ustawionego na arabską kulturę langage pokaże Tak:

// 23:12 م

مساء oznacza wieczór (pierwszy leter مساء).

W innej kulturze systemowej zależy od tego, co jest ustawione w opcji regionalnej i językowej windows, pokaże / / 23: 12 du.

Możesz zmieniać różne formaty w systemie Windows control panel pod Windows regional and language - > current format (combobox) i zmień... zastosuj go Przebuduj (wykonaj) swoją aplikację i obserwuj, o czym mówię.

Więc komu mogę wymusić Pokazywanie słów Am I Pm w języku angielskim, jeśli kultura > obecnego systemu nie jest ustawiona na angielski ?

Easy wystarczy dodać dwie linie: - >

Pierwszy krok dodaj using System.Globalization; na górze kodu

I modyfikowanie poprzedniego kodu tak, aby :

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 = > używanie domyślnego formatu angielskiego.

Kolejne pytanie chcę, aby pm był w języku arabskim lub konkretnym języku, nawet jeśli używam systemu windows ustawionego na angielski (lub inny język) format regionalny?

Soution dla arabskiego Exemple:

DateTime d = new DateTime(1, 1, 1, 23, 12, 0);
var res = d.ToString("HH:mm tt", CultureInfo.CreateSpecificCulture("ar-AE")); 

To pokaże / / 23: 12[7]}

Zdarzenie, jeśli mój system jest ustawiony na angielski Format regionu. możesz zmienić "ar-AE", jeśli chcesz zmienić format języka. istnieje lista każdego języka i jego 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...
Daj mi znać, jeśli masz inne pytanie .
 21
Author: Bilal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-11 11:20:01

Wiem, że to może wydawać się bardzo późno.. jednak może to komuś pomóc

Chciałem dostać AM PM część daty, więc skorzystałem z tego, co Andy poradził:

dateTime.ToString("tt");

Użyłem tej części do zbudowania ścieżki do zapisania plików.. Zbudowałem swoje założenia, że dostanę albo AM albo PM i nic więcej !!

Jednak kiedy używałem komputera, jego kultura nie jest angielska ..(w moim przypadku Arabski).. moja aplikacja nie powiodła się, ponieważ format "tt" zwrócił coś nowego nie AM ani PM (م lub ص)..

Więc poprawką było zignorowanie kultury przez dodanie drugiego argumentu w następujący sposób:

dateTime.ToString("tt", CultureInfo.InvariantCulture);

.. oczywiście trzeba dodać: korzystanie z systemu.Globalizacja; na szczycie pliku ur Mam nadzieję, że to komuś pomoże:)

 16
Author: searchingSO,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-03 03:49:33
+ PC.GetHour(datetime) > 11 ? "pm" : "am"

Dla Twojego przykładu, ale są lepsze sposoby formatowania datetime.

 7
Author: Kevin Holditch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-24 12:01:56

From: http://www.csharp-examples.net/string-format-datetime/

string.Format("{0:t tt}", datetime);  // -> "P PM"  or "A AM"
 7
Author: Baptiste Pernet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-24 12:07:07

Coś w stylu bool isPM = GetHour() > 11. Ale jeśli chcesz sformatować datę na ciąg znaków, nie powinieneś tego robić sam. Użyj do tego funkcji formatowania daty .

 4
Author: CodesInChaos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-24 12:00:38

Its pretty simple

  Date someDate = new DateTime();
  string timeOfDay = someDate.ToString("hh:mm tt"); 
  // hh - shows hour and mm - shows minute - tt - shows AM or PM
 2
Author: Jamisco,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-04 22:16:05

Możesz go przetestować w ten sposób

Console.WriteLine(DateTime.Now.ToString("tt "));

Wynik będzie wyglądał następująco:

AM

Lub

PM
 1
Author: yazarloo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-30 11:07:38

Oto łatwiejszy sposób zapisu formatu czasu (hh:mm:ss tt) i wyświetlania ich oddzielnie, jeśli chcesz.

string time = DateTime.Now.Hour.ToString("00") + ":" + DateTime.Now.Minute.ToString("00") + ":" + DateTime.Now.Second.ToString("00") + DateTime.Now.ToString(" tt");

Lub po prostu:

 DateTime.Now.ToString("hh:mm:ss tt")
 -1
Author: Zero,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-19 14:30:19

Oto przykładowy kod:

DateTime time = DateTime.Now;
string AM_PM;
AM_PM = time.ToLongTimeString().Substring(time.ToLongTimeString().Length - 2);
 -2
Author: Praveen Manupati,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-21 03:44:19
string AM_PM = string.Format("{0:hh:mm:ss tt}", DateTime.Now).Split(new char[]{' '})[1];
 -2
Author: Shah Bdr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-31 05:49:30