A linguagem Java mantém o controle do tempo inteiramente em termos do número de milissegundos que separam um momento da meia-noite de 1 de janeiro de 1970 UTC e armazena esse valor como um longo (64 bit) inteiro. Isso permite que ele suporte a todos os momentos possíveis que caem dentro de 290 milhões anos de 1970, em um ou outro sentido . Desta vez nem é convertido para um formato mais útil pelo programador ou por uma das turmas de data e hora padrão do Java . Cronometragem um bloco de código
O uso mais simples de vez em Java é o que é necessário para que um bloco de código. Basta ligar para System.currentTimeMillis () e armazenar isso em um inteiro longo antes do bloco de código que você deseja tempo. Por exemplo :
longo startTime = System.currentTimeMillis ();
E então, depois de seu bloco de acabamentos de código (ou durante , se você deseja que ele para representar tempo decorrido ), ligue para System.currentTimeMillis () novamente e subtrair o startTime dele. Por exemplo :
longo elapsedTime = System.currentTimeMillis () - startTime ;
Se você deseja uma representação mais precisa do tempo de milissegundos, você também pode substitui currentTimeMillis () com nanoTime ().
Usando Datas e Calendários
a função currentTimeMillis e nanoTime nos expõe aos princípios de lidar com o tempo dentro de um programa , mas não com a lidar com o tempo em termos de comum unidades como horas , dias e anos . Felizmente, Java fornece uma classe GregorianCalendar para auxiliar no trabalho com unidades mais intuitivas de tempo. A GregorianCalendar pode ser construído sem um argumento para representar automaticamente o tempo atual. Por exemplo :
GregorianCalendar currentTime = new GregorianCalendar ();
Ou pode ser construído usando um dos dois métodos a seguir para um momento específico , quer no passado ou no futuro :
reunião GregorianCalendar = new GregorianCalendar (2009 , 12, 14 , 8, 00 ) //08:00 em 14 de dezembro , 2009GregorianCalendar meetingEnds = new GregorianCalendar (2009 , 12, 14 , 8, 46, 23 ) //08:46:23 em 14 dezembro de 2009
para usar nossos objetos GregorianCalendar , vamos precisar para converter o valor de uma classe Date. Por exemplo :
Data meetingDate = meeting.getTime (); Data meetingEndsDate = meetingEnds.getTime ();
Calculando tempo decorrido
Calcular o tempo decorrido a partir de dois objetos de data é então uma questão simples
longo elapsedTime = meetingEndsDate.getTime () - meetingDate.getTime (); .
Isso nos dará o tempo decorrido em milissegundos , que podem ser convertidos em unidades mais intuitivos com um pouco de aritmética simples.
Usando DateFormat
Existe uma ferramenta mais importante em Java para tempo de manipulação , e que é a DateFormat classe , que fornece uma variedade de métodos para outputing Data objetos para cordas e para a leitura de seqüências de volta para datas. Por exemplo : .
Cordas meetingString = DateFormat.getDateInstance ( DateFormat.MEDIUM ) formato ( meetingDate );
O argumento dado a getDateInstance ( ) representa o estilo usado para saída a data. Alguns formatos válidos incluem FULL, longo, médio e CURTO . SHORT irá imprimir o ano , mês e dia inteiramente em algarismos , enquanto FULL explicitar detalhes, como fuso horário , a fim de dar o máximo de informações sobre a data possível.