Como formatar corretamente de acordo com a data e a hora da configuração do dispositivo, tendo um ano, mês, dia, hora e minuto?
321
Use a classe Java DateFormat padrão.
Por exemplo, para exibir a data e hora atuais, faça o seguinte:
Date date = new Date(location.getTime());
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
mTimeText.setText("Time: " + dateFormat.format(date));
Você pode inicializar um objeto Date com seus próprios valores, no entanto, você deve estar ciente de que os construtores foram descontinuados e realmente deve usar um objeto Java Calendar.
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
O dateFormat retornado é do tipojava.text.DateFormat
(e NÃOandroid.text.format.DateFormat
)Na minha opinião,
android.text.format.DateFormat.getDateFormat(context)
me deixa confuso porque esse método retorna emjava.text.DateFormat
vez deandroid.text.format.DateFormat
- - ".Então, eu uso o código do fragmento como abaixo para obter a data / hora atual no meu formato.
Além disso, você pode usar outros formatos. Siga DateFormat .
fonte
hh:mm:ss
lhe dará01:00:00
para 01:00, você vai precisar usarkk:mm:ss
para obter13:00:00
k
é hora no dia (1-24), não quer dizerH
, que é hora no dia (0-23), por exemplo. HH: mm: ss? Veja: developer.android.com/reference/java/text/SimpleDateFormat.htmljava.text.SimpleDateFormat
(o que você ligada e usosH
para horas na faixa de 0-23) eandroid.text.format.DateFormat
(o que a resposta é sobre e usosk
para horas no 0-23 range)k
a documentação dosDateFormat
estados claros. Para a documentação canônica de cadeias de formato, consulte SimpleDateFormat. Muito confuso. Ou eu estou esquecendo de alguma coisa?Você pode usar
DateFormat
. O resultado depende da Localidade padrão do telefone, mas você também pode especificar Localidade:https://developer.android.com/reference/java/text/DateFormat.html
Isso resulta em um
Localidade FR: 3 nov. 2017
US / En Locale: 12 de janeiro de 1952
FR Local: 03/11/2017
Local dos EUA / em: 12.13.52
Localidade FR: 3 nov. 2017
US / En Locale: 12 de janeiro de 1952
Local da FR: 3 de novembro de 2017
Local dos EUA / em: 12 de janeiro de 1952
FR Local: sexta-feira, 3 de novembro de 2017
US / En Locale: terça-feira, 12 de abril de 1952
Localidade FR: 3 nov. 2017 16:04:58
FR Local: 03/11/2017 16:04
FR Local: 03/11/2017 16:04:58
Local da FR: 11/11/2017 16:04:58 GMT + 01: 00
FR Local: 03/11/2017 16:04:58 heure normale d'Europe centrale
FR Local: 16:04:58
FR Local: 16:04
FR Local: 16:04:58
Local da FR: 16:04:58 GMT + 01: 00
FR Local: 16:04:58 heure normale d'Europe centrale
fonte
Date to Locale string de data:
Opções:
-> 31 de dezembro de 1969
-> 31 de dezembro de 1969 16:00:00
-> 16:00:00
fonte
Isso fará isso:
fonte
Use SimpleDateFormat
Como isso:
fonte
new SimpleDateFormat("my-format", Locale.getDefault());
Após isso: http://developer.android.com/reference/android/text/format/Time.html
É melhor usar a classe Time nativa do Android:
Depois formate:
fonte
Use essas duas como variáveis de classe:
E use-o assim:
fonte
Este é o meu método, você pode definir e formato de entrada e saída.
fonte
SimpleDateFormat
Uso SimpleDateFormat sem padrão personalizado para obter a data e hora reais do sistema no formato pré-selecionado do dispositivo :
retorna :
fonte
Use build na classe Time!
fonte
As outras respostas estão geralmente corretas. Eu gostaria de contribuir com a resposta moderna. As aulas
Date
,DateFormat
eSimpleDateFormat
usadas na maioria das outras respostas, estão desatualizadas há muito tempo e causaram problemas para muitos programadores ao longo de muitos anos. Hoje temos muito melhorjava.time
, o AKA JSR-310, a moderna API de data e hora de Java. Você já pode usar isso no Android? Certamente! As classes modernas foram portadas para o Android no projeto ThreeTenABP. Veja esta pergunta: Como usar o ThreeTenABP no Android Project para obter todos os detalhes.Este snippet deve começar:
Quando defino o idioma preferido do meu computador para inglês dos EUA ou inglês do Reino Unido, isso imprime:
Quando em vez disso, defino-o como dinamarquês, recebo:
Por isso, segue a configuração. No entanto, não sei exatamente quais detalhes seguem as configurações de data e hora do seu dispositivo, e isso pode variar de telefone para telefone.
fonte
Este código funciona para mim!
fonte
A classe de formato de data trabalha com código de fraude para criar a data. Gostar
Você pode conferir mais truques aqui .
fonte
Este código retornaria a data e hora atuais:
fonte
Localidade
Para obter a data ou hora no formato de localidade em milissegundos, usei o seguinte:
Data e hora
Encontro
Tempo
Você pode usar outro estilo de data e hora. Mais informações sobre estilos aqui .
fonte
Maneira mais curta:
%tR
é abreviação de%tH:%tM
,<
significa reutilizar o último parâmetro (1$
).É equivalente a
String.format("%1$tY-%1$tm-%1$td %1$tH:%1$tM", Calendar.getInstance())
https://developer.android.com/reference/java/util/Formatter.html
fonte
Experimentar:
E quando você está acessando variáveis passadas:
fonte
Eu uso assim:
fonte
Evite juDate
O Java.util.Date e .Calendar e SimpleDateFormat em Java (e Android) são notoriamente problemáticos. Evite-os. Eles são tão ruins que a Sun / Oracle desistiu deles, substituindo-os com o novo pacote java.time no Java 8 (não no Android a partir de 2014). O novo
java.time
foi inspirado na biblioteca Joda-Time .Joda-Time
O Joda-Time funciona no Android.
Pesquise StackOverflow por "Joda" para encontrar muitos exemplos e muita discussão.
Um pedacinho de código fonte usando o Joda-Time 2.4.
Formato padrão.
Formato localizado.
fonte
De volta a 2016, quando desejo personalizar o formato (não de acordo com a configuração do dispositivo, como você pergunta ...), geralmente uso o arquivo de recursos da string:
em strings.xml:
Em Atividade:
Isso também é útil com o lançamento da nova biblioteca de vinculação de datas .
Para que eu possa ter algo assim no arquivo de layout:
E na classe java:
fonte
A classe Time do Android fornece três métodos de formatação http://developer.android.com/reference/android/text/format/Time.html
Foi assim que eu fiz:
Espero que seja útil :-)
fonte
É tarde demais, mas pode ajudar alguém
aqui
format
está o formato que você precisaex: "HH: mm" retorna 15:30
fonte