Boa Noite Pessoal,
Tenho esse formato de data abaixo:
2020-08-02T08:57:00.000+0200
Minha intenção é adicionar apenas um dia à essa data, no caso ficaria assim:
2020-08-03T08:57:00.000+0200
Alguém poderia me dá uma luz?
Boa Noite Pessoal,
Tenho esse formato de data abaixo:
2020-08-02T08:57:00.000+0200
Minha intenção é adicionar apenas um dia à essa data, no caso ficaria assim:
2020-08-03T08:57:00.000+0200
Alguém poderia me dá uma luz?
isso é um timestamp with timezone
Vc pode converter isso pra Date e alterar:
long timestamp = 5607059900000;
Timestamp stamp = new Timestamp(timestamp);
Date date = new Date(stamp.getTime());
System.out.println(date);
//eai pega o dia usando o calendar
Caso vc recupere isso como String, pode fazer o mais chato:
String timestamp = "2020-08-02T08:57:00.000+0200".split("T")[0];
//output: 2020-08-02
String dia = timestamp.split("-")[2];
System.out.println(dia);
//output: 02
Cara, eu não sei não, o time aceita timestamp? Eu sempre usei a primeira opção quando recuperava timestamp
Não sei também se aceita, só pensei que fosse melhor utilizar uma API mais recente para trabalhar com Datas, vou dar uma olhada aqui e edito esse post.
Acho que se tratando de bibliotecas terceiras o mais aconselhável é a JodaTime, aí sim é sucesso.
O java.time
eu nunca usei muito não
O máximo que consegui fazer foi dessa maneira, porém tive que remover o T e o .0200, esse tipo de data parece que é complicado trabalhar!
String s = "2020-08-02 08:57:00.000";
LocalDateTime ldt = LocalDateTime.parse(s, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));
ldt = ldt.plusDays(1); //adiciona 1 dia
System.out.println(ldt);
O melhor que consegui fazer foi isso graças ao exemplo do @rodriguesabner :
@jbdj2006 Espero que te ajude de alguma forma!
String s = "2020-08-02T08:57:00.000+0200";
StringBuilder sb = new StringBuilder();
sb.append(s);
LocalDate ldt = LocalDate.parse(s.split("T")[0], DateTimeFormatter.ofPattern("yyyy-MM-dd"));
ldt = ldt.plusDays(1); //adiciona 1 dia
sb.replace(0, ldt.toString().length(), ldt.toString());
System.out.println(sb); //O resultado é 2020-08-03T08:57:00.000+0200
Esta data tem informação
2020-08-02T08:57:00.000+0200
Ano-Mes-DiaTHora:Minuto:Segundo.Milissegundos+OffsetTimezone
Para pegar toda a informação, você deve utilizar OffsetTimezone. Uma explicação muito boa está aqui
Daí você faria
OffsetDateTime data = OffsetDateTime.parse("2020-08-02T08:57:00.000+0200");
System.out.println("Data: " + data.plusDays(1));
Referências:
@SrMouraSilva, essa solução deu erro:
OffsetDateTime data = OffsetDateTime.parse("2020-08-02T08:57:00.000+0200");
System.out.println("Data: " + data.plusDays(1));
Consegui fazer com a solução do @WillianC19:
String s = "2020-08-02T08:57:00.000+0200";
StringBuilder sb = new StringBuilder();
sb.append(s);
LocalDate ldt = LocalDate.parse(s.split("T")[0], DateTimeFormatter.ofPattern("yyyy-MM-dd"));
ldt = ldt.plusDays(1); //adiciona 1 dia
sb.replace(0, ldt.toString().length(), ldt.toString());
System.out.println(sb); //O resultado é 2020-08-03T08:57:00.000+0200
Muito obrigado pessoal pela grande ajuda.
Acho que o padrão correto para iso date time com offset é assim:
2020-08-02T08:57:00.000+02:00
tem um : no offset. Com isso, essa solução vai funcionar:
OffsetDateTime data = OffsetDateTime.parse("2020-08-02T08:57:00.000+02:00");