Como converter data atual em string em java?

Como faço para converter a data atual em string em Java?

String date = new SimpleDateFormat("dd-MM-yyyy").format(new Date()); 
 // GET DATE & TIME IN ANY FORMAT import java.util.Calendar; import java.text.SimpleDateFormat; public static final String DATE_FORMAT_NOW = "yyyy-MM-dd HH:mm:ss"; public static String now() { Calendar cal = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW); return sdf.format(cal.getTime()); } 

Tirado daqui

 // On the form: dow mon dd hh:mm:ss zzz yyyy new Date().toString(); 

Use uma implementação de DateFormat ; Por exemplo, SimpleDateFormat .

 DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); String data = df.format(new Date()); 

Mais rápido :

 String date = FastDateFormat.getInstance("dd-MM-yyyy").format(System.currentTimeMillis( )); 

tl; dr

 LocalDate.now() .toString() 

2017-01-23

É melhor especificar explicitamente o fuso horário desejado / esperado.

 LocalDate.now( ZoneId.of( "America/Montreal" ) ) .toString() 

java.time

A maneira moderna a partir do Java 8 e posterior é com o framework java.time .

Especifique o fuso horário, já que a data varia ao redor do mundo a qualquer momento.

 ZoneId zoneId = ZoneId.of( "America/Montreal" ) ; // Or ZoneOffset.UTC or ZoneId.systemDefault() LocalDate today = LocalDate.now( zoneId ) ; String output = today.toString() ; 

2017-01-23

Por padrão, você obtém uma String no formato padrão ISO 8601 .

Para outros formatos, use a class java.time.format.DateTimeFormatter .


Sobre o java.time

O framework java.time está embutido no Java 8 e posterior. Essas classs substituem as antigas classs herdadas de data e hora legadas , como java.util.Date , Calendar e SimpleDateFormat .

O projeto Joda-Time , agora em modo de manutenção , aconselha a migration para as classs java.time .

Para saber mais, veja o Oracle Tutorial . E pesquise o Stack Overflow para muitos exemplos e explicações. A especificação é JSR 310 .

Você pode trocar objects java.time diretamente com seu database. Use um driver JDBC compatível com o JDBC 4.2 ou posterior. Não há necessidade de strings, não há necessidade de classs java.sql.* .

Onde obter as classs java.time?

  • Java SE 8 , Java SE 9 , Java SE 10 e posterior
    • Construídas em.
    • Parte da API Java padrão com uma implementação integrada.
    • O Java 9 adiciona alguns resources e correções menores.
  • Java SE 6 e Java SE 7
    • Grande parte da funcionalidade java.time é transferida para o Java 6 e 7 no ThreeTen-Backport .
  • Android
    • Versões posteriores das implementações do pacote Android das classs java.time.
    • Para Android anterior (<26), o projeto ThreeTenABP adapta o ThreeTen-Backport (mencionado acima). Veja Como usar o ThreeTenABP… .

O projeto ThreeTen-Extra estende java.time com classs adicionais. Este projeto é um campo de testes para possíveis futuras adições ao java.time. Você pode encontrar algumas classs úteis aqui como Interval , YearWeek , YearQuarter e muito mais .

A maioria das respostas são válidas. A nova modificação da API JAVA para tratamento de data garantiu que alguma ambigüidade anterior no manuseio de data do java fosse reduzida.

Você receberá uma mensagem reprovada para chamadas semelhantes.

 new Date() // deprecated 

A chamada acima fez com que o desenvolvedor assumisse que um novo object Date forneceria o object Date com o timestamp atual. Esse comportamento não é consistente em outras classs da API Java.

A nova maneira de fazer isso é usando a instância do calendar .

 new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime() 

Aqui também a convenção de nomenclatura não é perfeita, mas isso é muito organizado. Para uma pessoa como eu, que tem dificuldade em assaltar as coisas, mas nunca esqueceria alguma coisa, se parece / parece lógico, esta é uma boa abordagem.

Isso é mais sinônimo da vida real

  1. Obtemos um object Calendar e procuramos o tempo nele. (você deve estar se perguntando se nenhum corpo recebe tempo de um calendar, é por isso que eu disse que não é perfeito. Mas esse é um tópico completamente diferente)
  2. Então, queremos a data em um formato de texto simples, então usamos uma class de utilitário SimpleDateFormat que nos ajuda a formatar a data da etapa 1. Eu usei aaaa, MM, dd como parâmetros no formato. parameters de formato de data suportados

Mais uma maneira de fazer isso é usando o Joda time API

 new DateTime().toString("yyyy-MM-dd") 

ou o muito óbvio

 new DateTime(Calendar.getInstance().getTime()).toString("yyyy-MM-dd") 

ambos retornarão o mesmo resultado.

Por tempo como AAAA-MM-dd

 String time = new DateTime( yourData ).toString("yyyy-MM-dd"); 

E a biblioteca do DateTime é:

import org.joda.time.DateTime;

 public static Date getDateByString(String dateTime) { if(dateTime==null || dateTime.isEmpty()) { return null; } else{ String modified = dateTime + ".000+0000"; DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); Date dateObj = new Date(); Date dateObj1 = new Date(); try { if (dateTime != null) { dateObj = formatter.parse(modified); } } catch (ParseException e) { e.printStackTrace(); } return dateObj; } }