O código em questão está abaixo:
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()
+ " "
????????????????
}
como posso obter o valor AM / PM dateTime
?
c#
.net
datetime
datetime-format
gregorian-calendar
Luz cinza
fonte
fonte
DateTime
que isso. Consulte msdn.microsoft.com/en-us/library/8kb3ddd4.aspxdateTime.ToString("tt");
Respostas:
E se:
fonte
CultureInfo.InvariantCulture
ToString("tt", System.Globalization.CultureInfo.InvariantCulture)
DateTime.Now.AddHours(12).ToString("tt", CultureInfo.InvariantCulture)
Isso deve fornecer o valor da string do tempo. deve acrescentar a am / pm.
Você também pode olhar para o tópico relacionado:
Como você obtém a hora atual do dia?
fonte
hh
pois sua representação atual é impressa em 24 horas, com am e pm, o que é um pouco inútilA
DateTime
deve sempre ser internamente na (gregoriano) calendário "americano". Então se você fazvocê deve conseguir o que deseja em muito menos linhas.
fonte
Muito simples usando o formato de string
em
.ToSTring("") :
se você usar "hh" - >> A hora, usando um relógio de 12 horas de 01 a 12.
se você usar "HH" - >> A hora, usando um relógio de 24 horas de 00 a 23.
se você adicionar "tt" - >> O designador Am / Pm.
exemplo de conversão de 23:12 para 11:12 Pm:
espere um segundo que não é tudo o que você precisa para se preocupar com outra coisa: o sistema Culture, porque o mesmo código executado no Windows com outro idioma, especialmente com idioma diferente, irá gerar resultados diferentes com o mesmo código.
Um exemplo de janela definida para a linguagem árabe será mostrada assim:
// 23:12 م
م significa noite (primeira letra de مساء).
em outra cultura do sistema, depende do que está definido na opção regional e de idioma do windows, mostrará // 23:12 du.
você pode alternar entre diferentes formatos no painel de controle do Windows, em regional e idioma -> formato atual (caixa de combinação) e alterar ... aplicá-lo, reconstruir (executar) o aplicativo e ver o que estou falando.
fácil apenas adicionando duas linhas: ->
o primeiro passo adicione
using System.Globalization;
em cima do seu códigoe modificando o código anterior para ficar assim:
InvariantCulture => usando o formato padrão em inglês.
outra pergunta: quero que a pm esteja em árabe ou em um idioma específico, mesmo que eu use janelas definidas para o formato regional em inglês (ou outro idioma)?
Soution para exemplo árabe:
isso mostrará // 23:12 م
evento se meu sistema estiver definido para um formato de região em inglês. você pode alterar "ar-AE" se desejar outro formato de idioma. existe uma lista de cada idioma e seu formato.
exemplos:
me avise se você tiver outra pergunta.
fonte
Eu sei que isso pode parecer muito tarde .. no entanto, pode ajudar alguém lá fora
Como eu queria que a parte da tarde fosse AM PM, usei o que Andy aconselhou:
Eu usei essa parte para construir um caminho para salvar meus arquivos. Criei minhas suposições de que obterei AM ou PM e nada mais!
no entanto, quando usei um PC que sua cultura não é inglesa .. (no meu caso árabe) .. meu aplicativo falhou porque o formato "tt" retornou algo novo, não AM nem PM (م ou ص) ..
Portanto, a solução foi ignorar a cultura adicionando o segundo argumento da seguinte maneira:
.. é claro que você precisa adicionar: using System.Globalization; no topo do seu arquivo espero que ajude alguém :)
fonte
é bem simples
fonte
Para o seu exemplo, mas existem maneiras melhores de formatar a data e hora.
fonte
De: http://www.csharp-examples.net/string-format-datetime/
fonte
Algo como
bool isPM = GetHour() > 11
. Mas se você quiser formatar uma data para uma sequência, não precisará fazer isso sozinho. Use as funções de formatação de data para isso.fonte
Você pode testá-lo desta maneira
A saída será assim:
ou
fonte
Now
Aqui está uma maneira mais fácil de escrever o formato da hora
(hh:mm:ss tt)
e exibi-los separadamente, se desejar.ou simplesmente:
fonte
A resposta de Andy é boa. Mas se você quiser mostrar o horário sem formato de 24 horas, poderá seguir desta maneira
Depois disso, você deve ter um horário como "22:35:20" ou "10:35:20"
fonte
fonte
Aqui está um exemplo de código:
fonte
ToLongTimeString()
retorna um valor com base na cultura atual do encadeamento. E, diferentemente de algumas das soluções semelhantes fornecidas em outras respostas, esse código nem funcionará se você definir a cultura do thread comoInvariantCulture
, porque a cultura invariávelLongTimePattern
- que é o que determina o valor de retornoToLongTimeString()
- éHH:mm:ss
.