Eu tenho uma String
representação de uma data.
String date_s = "2011-01-18 00:00:00.0";
Eu gostaria de convertê-lo para um Date
e produzi-lo em YYYY-MM-DD
formato.
18/01/2011
Como posso conseguir isso?
Ok, com base nas respostas que recuperei abaixo, eis uma coisa que tentei:
String date_s = " 2011-01-18 00:00:00.0";
SimpleDateFormat dt = new SimpleDateFormat("yyyyy-mm-dd hh:mm:ss");
Date date = dt.parse(date_s);
SimpleDateFormat dt1 = new SimpleDateFormat("yyyyy-mm-dd");
System.out.println(dt1.format(date));
Mas ele gera em 02011-00-1
vez do desejado 2011-01-18
. O que estou fazendo errado?
java
string
date
formatting
date-format
amit4444
fonte
fonte
Respostas:
Use
LocalDateTime#parse()
(ouZonedDateTime#parse()
se a sequência contiver uma parte do fuso horário) para analisar umString
em um determinado padrão em aLocalDateTime
.Use
LocalDateTime#format()
(ouZonedDateTime#format()
) para formatar aLocalDateTime
em umString
em um determinado padrão.Ou , quando você ainda não estiver no Java 8, use
SimpleDateFormat#parse()
para analisar aString
em um determinado padrão em umaDate
.Use
SimpleDateFormat#format()
para formatar aDate
emString
em um determinado padrão.Veja também:
Atualização : conforme sua tentativa falhada: os padrões diferenciam maiúsculas de minúsculas . Leia o
java.text.SimpleDateFormat
javadoc sobre o que as partes individuais representam. Assim, por exemplo,M
durante meses em
minutos. Além disso, existem anos de quatro dígitosyyyy
, não cincoyyyyy
. Veja mais de perto os trechos de código que eu postei aqui acima.fonte
A formatação é sensível a maiúsculas e minúsculas, portanto, use MM por mês e não por mm (isto é por minuto) e aaaa. Para referência, você pode usar as seguintes dicas.
Exemplos:
fonte
É claro que a resposta é criar um objeto SimpleDateFormat e usá-lo para analisar Strings para Data e para formatar Datas em Strings. Se você tentou o SimpleDateFormat e não funcionou, mostre seu código e quaisquer erros que você possa receber.
Adendo: "mm" no formato String não é o mesmo que "MM". Use MM por meses e mm por minutos. Além disso, aaaaa não é o mesmo que aaaa. por exemplo,:
fonte
hh
lhe dará a hora no intervalo de 1 a 12, você precisará usara
além de imprimir / analisarAM
ouPM
. Para imprimir / analisar a hora no intervalo de 0 a 23, useHH
.Por que não simplesmente usar isso
Além disso, esta é a outra maneira:
ou
Felicidades!
fonte
Usando o
java.time
pacote no Java 8 e posterior:fonte
[editado para incluir as correções de BalusC] A classe SimpleDateFormat deve fazer o truque:
fonte
DD
significa "dia do ano", não "dia do mês".hh
significa "hora em am / pm (1-12)", não "hora em dia (0-23)".Outras respostas estão corretas, basicamente você tinha o número errado de caracteres "y" em seu padrão.
Fuso horário
Porém, mais um problema ... Você não abordou os fusos horários. Se você pretendia UTC , deveria ter dito isso. Caso contrário, as respostas não estão completas. Se tudo o que você deseja é a parte da data sem a hora, não há problema. Mas se você continuar trabalhando que possa envolver tempo, deverá especificar um fuso horário.
Joda-Time
Aqui está o mesmo tipo de código, mas usando a biblioteca Joda-Time 2.3 de código aberto de terceiros
Quando correr ...
fonte
Consulte "Padrões de data e hora" aqui. http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
fonte
fonte
fonte
fonte
Você pode apenas usar:
Funciona perfeitamente!
fonte
Você também pode usar substring ()
Se você quiser um espaço antes da data, use
fonte
Você pode experimentar o Java 8 novo
date
, mais informações podem ser encontradas na documentação do Oracle .Ou você pode tentar o antigo
fonte
fonte
remover um formulário y
SimpleDateFormat dt1 = new SimpleDateFormat("yyyyy-mm-dd");
deve serSimpleDateFormat dt1 = new SimpleDateFormat("yyyy-mm-dd");
fonte
DateTimeFormatter
ou se apega aos desatualizadosSimpleDateFormat
).SimpleDateFormat dt1 = new SimpleDateFormat ("aaaa-mm-dd");
fonte
DateTimeFormatter
eDateTimeFormatterBuilder
. SugerirSimpleDateFormat
em 2019 é um péssimo conselho.hh
é por uma hora.Digamos que você queira alterar 2019-12-20 10:50 GMT + 6: 00 para 2019-12-20 10:50 Antes de tudo, você precisa entender o formato da data O primeiro formato de data é aaaa-MM-dd hh : mm a zzz e o segundo formato de data será aaaa-MM-dd hh: mm a
basta retornar uma string dessa função como.
Esta função retornará sua resposta de desejo. Se você quiser personalizar mais, adicione ou remova componentes do formato da data.
fonte