Experimente este código de amostra: -
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Test {
/**
* Main Method
*/
public static void main(String[] args) {
System.out.println(getDate(82233213123L, "dd/MM/yyyy hh:mm:ss.SSS"));
}
/**
* Return date in specified format.
* @param milliSeconds Date in milliseconds
* @param dateFormat Date format
* @return String representing date in specified format
*/
public static String getDate(long milliSeconds, String dateFormat)
{
// Create a DateFormatter object for displaying date in specified format.
SimpleDateFormat formatter = new SimpleDateFormat(dateFormat);
// Create a calendar object that will convert the date and time value in milliseconds to date.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(milliSeconds);
return formatter.format(calendar.getTime());
}
}
Espero que ajude ...
java.util.Date
,java.util.Calendar
ejava.text.SimpleDateFormat
estão agora legado, suplantado pelos java.time classes. Grande parte da funcionalidade java.time é portada para Java 6 e Java 7 no projeto ThreeTen-Backport . Adaptado para o Android anterior no projeto ThreeTenABP . Consulte Como usar o ThreeTenABP… .Converta o valor de milissegundos em
Date
instância e passe-o para o formatador escolhido.fonte
Chame esta função
fonte
fonte
tente este código pode ajudar, modifique-o para atender às suas necessidades
fonte
finalmente encontrei um código normal que funciona para mim
fonte
tl; dr
java.time
A abordagem moderna usa as classes java.time que substituem as antigas e problemáticas classes de data e hora usadas por todas as outras respostas.
Supondo que você tenha
long
alguns milissegundos desde a referência de época do primeiro momento de 1970 no UTC, 1970-01-01T00: 00: 00Z ...Para obter uma data, é necessário um fuso horário. Para qualquer momento, a data varia ao redor do globo por zona.
Extraia um valor apenas de data.
Gere uma string representando esse valor usando o formato ISO 8601 padrão.
Gere uma String em formato personalizado.
Dica: considere deixar java.time localizar automaticamente para você em vez de codificar um padrão de formatação. Use os
DateTimeFormatter.ofLocalized…
métodos.Sobre java.time
A estrutura java.time é integrada ao Java 8 e posterior. Essas classes suplantar os velhos problemáticos legados aulas de data e hora, como
java.util.Date
,Calendar
, eSimpleDateFormat
.O projeto Joda-Time , agora em modo de manutenção , aconselha a migração para as classes java.time .
Para saber mais, consulte o tutorial Oracle . E pesquise no Stack Overflow para muitos exemplos e explicações. A especificação é JSR 310 .
Você pode trocar objetos java.time diretamente com seu banco de dados. Use um driver JDBC compatível com JDBC 4.2 ou posterior. Não há necessidade de cordas, não há necessidade de
java.sql.*
classes.Onde obter as classes java.time?
O projeto ThreeTen-Extra estende java.time com classes adicionais. Este projeto é um campo de provas para possíveis adições futuras ao java.time. Você pode encontrar algumas classes úteis aqui, como
Interval
,YearWeek
,YearQuarter
, e mais .fonte
Curto e eficaz:
fonte
fonte
fonte
Há algum tempo procuro uma maneira eficiente de fazer isso e o melhor que encontrei é:
Vantagens:
Desvantagens:
Você pode armazenar em cache o objeto java.text.DateFormat, mas não é threadsafe. Isso está OK se você estiver usando no thread de interface do usuário.
fonte
fonte
Use SimpleDateFormat para Android N e superior. Use o calendário para versões anteriores, por exemplo:
Saída:
fileName before: 2019-04-12-07: 14: 47 // use SimpleDateFormat
fileName after: 2019-4-12-7: 13: 12 // use Calender
fonte
Esta é a maneira mais fácil de usar Kotlin
fonte
SimpleDateFormat
classe há muito desatualizada e notoriamente problemática . Pelo menos não como primeira opção. E não sem reservas. Hoje temos muito melhor emjava.time
, a moderna API Java de data e hora e seusDateTimeFormatter
. Sim, você pode usá-lo no Android. Para Android mais antigo, use desugaring ou consulte Como usar o ThreeTenABP no Android Project .hh
? Verifique a diferença entre maiúsculas e minúsculas aqui.return Instant.ofEpochMilli(millis).atZone(ZoneId.systemDefault()).format(DateTimeFormatter.ofPattern(DATE_FORMAT, Locale.US))
. Sim, é mais longo porque dá mais informações sobre o que está acontecendo, então é uma vantagem.Você pode construir java.util.Date em milissegundos. E então o converteu em string com java.text.DateFormat.
fonte