Como faço para converter a data atual em string em Java?
Como faço para converter a data atual em string em Java?
Respostas:
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());
}
Retirado daqui
Calendar
mais desejável do que Date
?
// On the form: dow mon dd hh:mm:ss zzz yyyy
new Date().toString();
Use uma DateFormat
implementação; por exemplo SimpleDateFormat
.
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
String data = df.format(new Date());
LocalDate.now()
.toString()
23/01/2017
Melhor especificar o fuso horário desejado / esperado explicitamente.
LocalDate.now( ZoneId.of( "America/Montreal" ) )
.toString()
A maneira moderna a partir do Java 8 e posterior é com o framework java.time .
Especifique o fuso horário, pois a data varia em todo o 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() ;
23/01/2017
Por padrão, você obtém uma String no formato ISO 8601 padrão.
Para outros formatos, use a java.time.format.DateTimeFormatter
classe.
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 .
Mais rápido :
String date = FastDateFormat.getInstance("dd-MM-yyyy").format(System.currentTimeMillis( ));
Por hora como AAAA-MM-dd
String time = new DateTime( yourData ).toString("yyyy-MM-dd");
E a Biblioteca de DateTime é:
import org.joda.time.DateTime;
DateTime
? Uma resposta sobre Stack Overflow deve ter alguma explicação, pois este site foi feito para ser mais do que uma biblioteca de snippet.
A maioria das respostas são / eram válidas. A nova modificação da API JAVA para manipulação de data garantiu que alguma ambiguidade anterior na manipulação de data java fosse reduzida.
Você receberá uma mensagem obsoleta para chamadas semelhantes.
new Date() // deprecated
A chamada acima fez com que o desenvolvedor assumisse que um novo objeto Date fornecerá o objeto Date com o carimbo de data / hora atual. Este comportamento não é consistente em outras classes da API Java.
A nova maneira de fazer isso é usando a instância do calendário .
new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime()
Aqui também a convenção de nomenclatura não é perfeita, mas é muito organizada. Para uma pessoa como eu, que tem dificuldade em assaltar coisas, mas nunca se esqueceria de algo que soasse / parecesse lógico, esta é uma boa abordagem.
Isso é mais sinônimo da vida real
Outra maneira de fazer isso é usando a API de tempo Joda
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.
java.util.Date
, java.util.Calendar
e java.text.SimpleTextFormat
estão agora legado , suplantado pelos java.time classes. Além disso, o projeto Joda-Time está agora em modo de manutenção , com a equipe aconselhando a migração para java.time.
Clock
implementação em Java 8 é exatamente igual às classes legadas. Somente em Java 9 chega uma nova implementação, capaz de capturar o momento atual com uma resolução tão fina quanto nanossegundos.
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;
}
}
String
formato para a sua função.