Conversão Joda-Time para Java.Time
O Joda-Time foi uma biblioteca utilizada para a manipulação de datas e horas em Java antes da introdução do pacote java.time na versão Java 8. Com a introdução do java.time, muitas das funcionalidades oferecidas pelo Joda-Time foram integradas e melhoradas, tornando-o obsoleto e, por isso, a Senior utiliza o Java.Time, que oferece melhores recursos para realizar a manipulação das datas e horas.
Principais Métodos do Joda-Time e suas contrapartes em java.time
Em Joda-Time | Em Java Time | Descrição |
---|---|---|
DateTime.now() | LocalDateTime.now() | Obtém a data e hora atual. |
DateTime.parse("2023-06-18") | LocalDateTime.parse("2023-06-18T00:00:00") | Converte uma string para um objeto de data e hora. |
new DateTime(2023, 6, 18, 0, 0) | LocalDateTime.of(2023, 6, 18, 0, 0) | Cria um objeto de data e hora com valores específicos. |
new LocalDate(2023, 6, 18) | LocalDate.of(2023, 6, 18) | Cria um objeto de data com valores específicos. |
new LocalTime(10, 15, 30) | LocalTime.of(10, 15, 30) | Cria um objeto de hora com valores específicos. |
DateTime.now().plusDays(5) | LocalDateTime.now().plusDays(5) | Adiciona dias à data e hora atual. |
DateTime.now().minusDays(5) | LocalDateTime.now().minusDays(5) | Subtrai dias da data e hora atual. |
Days.daysBetween(date1, date2).getDays() | ChronoUnit.DAYS.between(date1, date2) | Calcula a diferença em dias entre duas datas. |
Months.monthsBetween(date1, date2).getMonths() | ChronoUnit.MONTHS.between(date1, date2) | Calcula a diferença em meses entre duas datas. |
Years.yearsBetween(date1, date2).getYears() | ChronoUnit.YEARS.between(date1, date2) | Calcula a diferença em anos entre duas datas. |
DateTime.toDate() | LocalDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli() | Converte para java.util.Date. |
new DateTime(new Date()) | LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault()) | Converte de java.util.Date. |
DateTime.withDayOfMonth(1) | LocalDateTime.withDayOfMonth(1) | Define o dia do mês para o primeiro dia do mês. |
DateTime.withDayOfWeek(1) | LocalDateTime.with(ChronoField.DAY_OF_WEEK, 1) | Define o dia da semana para segunda-feira. |
Minutes.minutesBetween(start, end) | Duration.between(start, end); | Calcula a diferença em minutos entre 2 datas. |
contextoApuracao.getData().getDayOfWeek() | contextoApuracao.getData().getDayOfWeek().getValue() | O metodo retorna um integer em Joda, com a alteração para java.time ele retorna um object, com isso é necessario adicionar um .getValue() para pegar a informação em integer. |
Nos casos que são utilizados o ZoneId.systemDefault(), são retornados os fusos horários padrões do sistema no qual a aplicação está sendo executada. Sendo possível utilizar outros como:
- ZoneId.of("UTC"): Tempo Universal Coordenado.
- ZoneId.of("GMT"): Tempo Médio de Greenwich.
- ZoneId.of("GMT+2"): GMT com offset de +2 horas.
- ZoneId.of("GMT-5"): GMT com offset de -5 horas.
- ZoneId.of("America/New_York"): Fuso horário de Nova Iorque.
- ZoneId.of("Europe/London"): Fuso horário de Londres.
- ZoneId.of("Asia/Tokyo"): Fuso horário de Tóquio.
- ZoneId.of("Australia/Sydney"): Fuso horário de Sydney.
- ZoneId.of("Europe/Paris"): Fuso horário de Paris.
- ZoneId.of("America/Sao_Paulo"): Fuso horário de São Paulo.
Exemplos de conversão
import org.joda.time.LocalDate;
import org.joda.time.LocalDateTime;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
Nova Instância
LocalDateTime iniAfast = new LocalDateTime(1900, 12, 31, 0, 0);
LocalDateTime fimAfast = new LocalDateTime(1900, 12, 31, 0, 0);
LocalDateTime iniAfast = new LocalDateTime.of(1900, 12, 31, 0, 0);
LocalDateTime fimAfast = new LocalDateTime.of(1900, 12, 31, 0, 0);
Diferença entre dias
int iDiferencaDias = Days.daysBetween(dDatAfa, dDatTer).getDays();
int iDiferencaDias = (int) ChronoUnit.DAYS.,between(dDatAfa, dDatTer);