Eu quero converter String
a Date
em diferentes formatos.
Por exemplo,
Estou recebendo do usuário,
String fromDate = "19/05/2009"; // i.e. (dd/MM/yyyy) format
Eu quero converter isso fromDate
como um objeto Date de "yyyy-MM-dd"
formato
Como posso fazer isso?
Respostas:
Dê uma olhada em
SimpleDateFormat
. O código é mais ou menos assim:fonte
Date
formato?parse
e não prossigaformat
.parse
analisa uma string para uma data.parse
dá-medate format
como,Fri Jan 06 00:01:00 EST 2012
mas precisa no2012-01-06
formato de dataSystem.out.println(anyDateObject)
o método toString () padrão é chamado, o que foi dito para imprimir nesse formato, por exemploFri Jan 06 00:01:00 EST 2012
. Você precisa substituí-lo para atender às suas necessidades.java.util.Date
,java.util.Calendar
ejava.text.SimpleDateFormat
agora são legadas , suplantadas pelas classes java.time integradas ao Java 8 e Java 9. Veja o Tutorial da Oracle .tl; dr
Detalhes
As outras respostas com
java.util.Date
,java.sql.Date
eSimpleDateFormat
agora estão ultrapassadas.LocalDate
A maneira moderna de fazer data e hora é trabalhar com as classes java.time, especificamente
LocalDate
. ALocalDate
classe representa um valor apenas de data sem hora do dia e sem fuso horário.DateTimeFormatter
Para analisar ou gerar uma String representando um valor de data e hora, use a
DateTimeFormatter
classe.Não confunda um objeto de data e hora com uma String representando seu valor. Um objeto de data e hora não tem formato , enquanto uma String tem. Um objeto de data e hora, como
LocalDate
, pode gerar uma String para representar seu valor interno, mas o objeto de data e hora e a String são objetos distintos separados.Você pode especificar qualquer formato personalizado para gerar uma String. Ou deixe java.time fazer o trabalho de localização automática.
Despeje para o console.
Veja em ação em IdeOne.com .
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
Use a
SimpleDateFormat
classe:Uso:
Para maior eficiência, você deseja armazenar seus formatadores em um hashmap. O hashmap é um membro estático de sua classe util.
fonte
Converta uma data de string para java.sql.Date
fonte
Verifique os javadocs para
java.text.SimpleDateFormat
saber se ele descreve tudo o que você precisa.fonte
Embora
SimpleDateFormat
realmente funcione para as suas necessidades, você também pode querer verificar Joda Time , que aparentemente é a base para a biblioteca Date refeita em Java 7. Embora eu não a tenha usado muito, não ouvi nada além de coisas boas sobre isso e se você está manipulando datas extensivamente em seus projetos, provavelmente valeria a pena dar uma olhada.fonte
Maneira simples de formatar uma data e convertê-la em string
fonte
Um
Date
objeto não tem formato , é uma representação. A data pode ser apresentada por umString
com o formato de sua preferência .Por exemplo, "
yyyy-MM-dd
", "yy-MMM-dd
", "dd-MMM-yy
" e etc.Para conseguir isso, você pode usar o
SimpleDateFormat
Tente isto,
Isso resulta em: 19/05/2009
fonte
Suponha que você tenha uma string como esta:
Agora queremos alterar esse
String
formato de data e hora separados em Java e Kotlin .JAVA:
temos um método para a data de extração :
Return
é este: 17/09/2019E temos método para extrair o tempo :
Return
é este: 10:56KOTLIN:
temos uma função para a data de extração :
Return
é este: 17/09/2019E temos método para extrair o tempo :
Return
é este: 10:56fonte
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
. TambémSimpleDateFormat
não é possível analisar 6 decimais nos segundos (microssegundos) corretamente.10:56 AM
como você diz que deveria, mas sim11:09 AM
(testado em Oracle jdk-11.0.3).DateTimeFormatter
nós precisamosminsdk 26
ou mais do que isso não é bom10:56 AM