1

TimeMillis

#Java
Jenifer Morais
Jenifer Morais

Estou no módulo "Desenvolvimento básico em Java" na aula "Classe Date".


Não sei como descobrir o timeInMillis da minha data de nascimento. O professor explica rapidamente um exemplo de como ocorre essa conversão mas não mostra no código em si, só mostra o long gerado e convertido em um objeto Date.


Alguém pode me ajudar?


(Foi pedido para que fizéssemos isso no final da aula, como exercício)


Obrigada a todas e todos.

3
29

Comentários (3)

0
Leonardo Carneiro

Leonardo Carneiro

02/03/2021 11:24

pesquisando na documentação java achei os seguintes métodos que podem auxiliar na resolução:

https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Date


O método Date.parse() analisa uma representação de data em string, e retorna o número de milisegundos desde 01 de Janeiro de 1970, 00:00:00 UTC. O uso de Date.parse não é recomendado. O método parse() analisa uma string de data (como "Dec 25, 1995") e retorna o número de milisegundos desde 01 de Janeiro de 1970, 00:00:00 UTC.


Usando getTime() para duplicar datas

Construindo um objeto de data com um horário idêntico.


// Sendo o mês iniciado em zero, birthday será 10 de Janeiro de 1995

var birthday = new Date(1994, 12, 10);

var copy = new Date();

copy.setTime(birthday.getTime());

0
Leonardo Carneiro

Leonardo Carneiro

02/03/2021 00:32

estou tendo dificuldade com essa atividade também.


na aula é passado o construtor Date(long date). que cria um objeto date. mas o valor fornecido deve ser a data em formato "epoch", que é o número de milissegundos passados entre 1 de Janeiro de 1970 00:00:00 UTC e uma data.


Date data = new Date(1613124807691L)

// cria um objeto com a data no formato "epoch"


o que ele pede no exercício:

  • converter sua data de nascimento do formato YYYY:MM:DD para o formato epoch. Na aula não ensina como fazer a conversão
  • criar um objeto Date(long date).
  • verificar se a data de nascimento é anterior ou posterior a 15/30/2010 utilizando o método .compareTo


pesquisei na internet e achei o seguinte: nós vamos ter que entrar uma data manualmente no formato simple date (no caso nossa data de nascimento) que deverá ser convertida no formato simple date, e então converter do simple date para o padrão "epoch". acho que o método que faz a conversão é o .getTime() . após uma pesquisa na internet fiz uma parte do código, mas não sei se está correto:


import java.util.*;

import java.lang.*;

import java.io.*;

import java.text.*;

 

class ExercicioData {

 

public static void main(String[] args) throws ParseException {

 

// converte a String data de nascimento em Simple Date

Date dataDeNascimento = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("1984-05-30 00:00:00");


// converte a String data desejada em Simple Date

Date dataDesejada = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2010-05-15 00:00:00");


// converte a data de nascimento para milis e armazena

Long nascimentoMili = dataDeNascimento.getTime();


// converte a data desejada para milis e armazena

Long dataMili = dataDesejada.getTime();


// agora temos que pegar a data no formato "epoch" que consiste em um número no formato 1613124807691 e concatenar com a letra L para ficar no formato 1613124807691L

// e então usar para criar o objeto Date objetoDataNascimento = new Date(1613124807691L)


// fazer o mesmo procedimento com a outra data desejada (15/30/2010)

// comparar as duas utilizando o .compareTo

// apontar se o seu aniversário é anterior ou posterior a essa data


}


}


0
G

Gabriel

24/02/2021 19:21

Pelo que eu vi tem várias formas de você fazer isso, a primeira forma é com o 'Date' do java.util.Date; com ele você pode usar o '.after(Date)' ou '.before(Date)' para ver se a data é anterior a outra data, ou posterior... retorna um true ou false; para criar um Date você deve usar milissegundos, que é o tempo em milissegundos decorrido dês de 1 de janeiro de 1970, para conseguir os milissegundos correspondentes a sua data de nascimento você pode usar o site currentmillis.com; um exemplo de como poderia ser feito:

import java.util.Date;

public class calculaDate {
  public static void main(String[] args) {
     Date dataNasc = new Date(-2391800012000L);
     Date dataParaComparar = new Date(1273892400000L);

     if(dataNasc.before(dataParaComparar)) {
        System.out.println("A data de nascimento é anterior a data.");
     }
     if(dataNasc.after(dataParaComparar)) {
        System.out.println("A data de nascimento é posterior a data. ");
     }
  }
}

Essa é a forma mais antiga, por isso muitos dos métodos de Date estão marcados como Deprecated.

Outra forma seria com Calendar:

import java.util.Calendar;
public class calculaCalendar{
  public static void main(String[] args){
     Calendar dataNasc = Calendar.getInstance();
     dataNasc.set(Calendar.YEAR, 2003);
     dataNasc.set(Calendar.MONTH, 3);
     dataNasc.set(Calendar.DAY_OF_MONTH, 3);

     Calendar dataParaComparar = Calendar.getInstance();
        . . .
     if(dataNasc.after(dataParaComparar)){
        System.out.println("A data de nascimento é posterior a data.");
     }
     if(dataNasc.before(dataParaComparar)){
        System.out.println("A data de nascimento é anterior a data.");
     }

  }
}

Outra forma é com LocalDateTime:

import java.util.Date;
import java.time.LocalDateTime;
public class LocalDate {
  public static void main(String[] args) {
     LocalDateTime dataNasc = LocalDateTime.of(2010,5,15,10,00,00);
     LocalDateTime dataParaComparar = LocalDateTime.of(2000,5,10,10,10,10);

     if(dataNasc.isAfter(dataParaComparar)){
        System.out.println("A data de nascimento é posterior a data.");
     }
     if(dataNasc.isBefore(dataParaComparar)){
        System.out.println("A data é posterior a data.");
     }
     if(dataNasc.isAfter(dataParaComparar)){
        System.out.println("A data de nascimento é anterior a data.");
     }
  }
}

LocalDateTime.of(ano,mês,dia,hora,minuto,segundo).

Estudante de Sistemas de Informação

Brasil