Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

Java - Data e hora


Java fornece a Data classe disponível em java.util pacote, esta classe encapsula a data e hora atuais.

A classe Date oferece suporte a dois construtores, conforme mostrado na tabela a seguir.
Nº Sr. Construtor e Descrição
1
Data( )

Esse construtor inicializa o objeto com a data e hora atuais.
2
Data (longo milissegundos)

Esse construtor aceita um argumento que é igual ao número de milissegundos decorridos desde a meia-noite de 1º de janeiro de 1970.

A seguir estão os métodos da classe de data.
Nº Sr. Método e descrição
1
booleano após(data data)

Retorna true se o objeto Date invocando contiver uma data posterior à especificada por date, caso contrário, retornará false.
2
booleano antes (data data)

Retorna true se o objeto Date invocando contiver uma data anterior à especificada por date, caso contrário, retornará false.
3
Clone de objeto( )

Duplica o objeto Date de invocação.
4
int compareTo(data data)

Compara o valor do objeto invocando com o valor de data. Retorna 0 se os valores forem iguais. Retorna um valor negativo se o objeto de invocação for anterior à data. Retorna um valor positivo se o objeto de invocação for posterior à data.
5
int compareTo(Object obj)

Opera de forma idêntica a compareTo(Date) se obj for da classe Date. Caso contrário, ele lança uma ClassCastException.
6
boolean equals(data do objeto)

Retorna true se o objeto Date que está invocando contiver a mesma hora e data que o especificado por date, caso contrário, retorna false.
7
longo getTime( )

Retorna o número de milissegundos decorridos desde 1º de janeiro de 1970.
8
int hashCode()

Retorna um código hash para o objeto que está chamando.
9
void setTime(longo tempo)

Define a hora e a data conforme especificado por time, que representa um tempo decorrido em milissegundos a partir da meia-noite de 1º de janeiro de 1970.
10
String toString( )

Converte o objeto Date que está chamando em uma string e retorna o resultado.

Como obter data e hora atuais


Este é um método muito fácil de obter data e hora atuais em Java. Você pode usar um objeto Date simples com toString() método para imprimir a data e hora atuais da seguinte forma -

Exemplo

Demonstração ao vivo
import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // Instantiate a Date object
      Date date = new Date();

      // display time and date using toString()
      System.out.println(date.toString());
   }
}

Isso produzirá o seguinte resultado -

Saída

on May 04 09:51:52 CDT 2009

Comparação de datas


A seguir estão as três maneiras de comparar duas datas -

Formatação de data usando SimpleDateFormat


SimpleDateFormat é uma classe concreta para formatação e análise de datas de maneira sensível à localidade. SimpleDateFormat permite que você comece escolhendo qualquer padrão definido pelo usuário para formatação de data e hora.

Exemplo

Demonstração ao vivo
import java.util.*;
import java.text.*;

public class DateDemo {

   public static void main(String args[]) {
      Date dNow = new Date( );
      SimpleDateFormat ft = 
      new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");

      System.out.println("Current Date: " + ft.format(dNow));
   }
}

Isso produzirá o seguinte resultado -

Saída

Current Date: Sun 2004.07.18 at 04:14:09 PM PDT

Códigos de formato de data simples


Para especificar o formato de hora, use uma string de padrão de hora. Neste padrão, todas as letras ASCII são reservadas como letras padrão, que são definidas como a seguir -
Personagem Descrição Exemplo
G Designador de era AD
s Ano em quatro dígitos 2001
M Mês no ano julho ou 07
d Dia no mês 10
h Hora em A.M./P.M. (1~12) 12
H Hora no dia (0~23) 22
m Minuto em hora 30
s Segundo em minuto 55
S Milisegundo 234
E Dia na semana terça-feira
D Dia do ano 360
F Dia da semana no mês 2 (segunda quarta-feira de julho)
w Semana do ano 40
W Semana no mês 1
a A.M./P.M. marcador PM
k Hora no dia (1~24) 24
K Hora em A.M./P.M. (0~11) 10
z Fuso horário Horário Padrão do Leste
' Escape para texto Delimitador
" Aspas simples `

Formatação de data usando printf


A formatação de data e hora pode ser feita com muita facilidade usando printf método. Você usa um formato de duas letras, começando com t e terminando em uma das letras da tabela conforme mostrado no código a seguir.

Exemplo

Demonstração ao vivo
import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // Instantiate a Date object
      Date date = new Date();

      // display time and date
      String str = String.format("Current Date/Time : %tc", date );

      System.out.printf(str);
   }
}

Isso produzirá o seguinte resultado -

Saída

Current Date/Time : Sat Dec 15 16:37:57 MST 2012

Seria um pouco bobo se você tivesse que fornecer a data várias vezes para formatar cada parte. Por isso, uma string de formato pode indicar o índice do argumento a ser formatado.

O índice deve seguir imediatamente o % e deve ser encerrado por um $.

Exemplo

Demonstração ao vivo
import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // Instantiate a Date object
      Date date = new Date();
  
      // display time and date
      System.out.printf("%1$s %2$tB %2$td, %2$tY", "Due date:", date);
   }
}

Isso produzirá o seguinte resultado -

Saída

Due date: February 09, 2004

Alternativamente, você pode usar o sinalizador <. Indica que o mesmo argumento da especificação de formato anterior deve ser usado novamente.

Exemplo

Demonstração ao vivo
import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // Instantiate a Date object
      Date date = new Date();
  
      // display formatted date
      System.out.printf("%s %tB %<te, %<tY", "Due date:", date);
   }
}

Isso produzirá o seguinte resultado -

Saída

Due date: February 09, 2004

Caracteres de conversão de data e hora

Personagem Descrição Exemplo
c Data e hora completas Seg 04 de maio 09:51:52 CDT 2009
F Data ISO 8601 2004-02-09
D EUA data formatada (mês/dia/ano) 02/09/2004
T Horário de 24 horas 18:05:19
r 12 horas 06:05:19 pm
R Horário de 24 horas, sem segundos 18:05
S Ano de quatro dígitos (com zeros à esquerda) 2004
a Últimos dois dígitos do ano (com zeros à esquerda) 04
C Os primeiros dois dígitos do ano (com zeros à esquerda) 20
B Nome completo do mês Fevereiro
b Nome do mês abreviado fevereiro
m Mês de dois dígitos (com zeros à esquerda) 02
d Dia de dois dígitos (com zeros à esquerda) 03
e Dia de dois dígitos (sem zeros à esquerda) 9
A Nome completo do dia da semana Segunda-feira
a Nome abreviado do dia da semana Seg
j Dia do ano com três dígitos (com zeros à esquerda) 069
H Hora de dois dígitos (com zeros à esquerda), entre 00 e 23 18
k Hora de dois dígitos (sem zeros à esquerda), entre 0 e 23 18
Eu Hora de dois dígitos (com zeros à esquerda), entre 01 e 12 06
l Hora de dois dígitos (sem zeros à esquerda), entre 1 e 12 6
M Minutos de dois dígitos (com zeros à esquerda) 05
S Segundos de dois dígitos (com zeros à esquerda) 19
L Milisegundos de três dígitos (com zeros à esquerda) 047
N Nanossegundos de nove dígitos (com zeros à esquerda) 047000000
P Marcador maiúsculo da manhã ou da tarde PM
p Marcador da manhã ou da tarde em minúsculas pm
z Deslocamento numérico RFC 822 do GMT -0800
Z Fuso horário PST
s Segundos desde 01-01-1970 00:00:00 GMT 1078884319
Q Milisegundos desde 01-01-1970 00:00:00 GMT 1078884319047

Existem outras classes úteis relacionadas a Data e hora. Para obter mais detalhes, você pode consultar a documentação do Java Standard.

Analisando Strings em Datas


A classe SimpleDateFormat tem alguns métodos adicionais, notadamente parse( ), que tenta analisar uma string de acordo com o formato armazenado no objeto SimpleDateFormat fornecido.

Exemplo

Demonstração ao vivo
import java.util.*;
import java.text.*;
  
public class DateDemo {

   public static void main(String args[]) {
      SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd"); 
      String input = args.length == 0 ? "1818-11-11" : args[0]; 

      System.out.print(input + " Parses as "); 
      Date t;
      try {
         t = ft.parse(input); 
         System.out.println(t); 
      } catch (ParseException e) { 
         System.out.println("Unparseable using " + ft); 
      }
   }
}

Uma execução de amostra do programa acima produziria o seguinte resultado -

Saída

1818-11-11 Parses as Wed Nov 11 00:00:00 EST 1818

Dormindo um pouco


Você pode dormir por qualquer período de tempo de um milissegundo até a vida útil do seu computador. Por exemplo, o seguinte programa dormiria por 3 segundos -

Exemplo

Demonstração ao vivo
import java.util.*;
public class SleepDemo {

   public static void main(String args[]) {
      try { 
         System.out.println(new Date( ) + "\n"); 
         Thread.sleep(5*60*10); 
         System.out.println(new Date( ) + "\n"); 
      } catch (Exception e) {
         System.out.println("Got an exception!"); 
      }
   }
}

Isso produzirá o seguinte resultado -

Saída

Sun May 03 18:04:41 GMT 2009
Sun May 03 18:04:51 GMT 2009

Medindo o tempo decorrido


Às vezes, pode ser necessário medir o ponto no tempo em milissegundos. Então vamos reescrever o exemplo acima mais uma vez -

Exemplo

Demonstração ao vivo
import java.util.*;
public class DiffDemo {

   public static void main(String args[]) {
      try {
         long start = System.currentTimeMillis( );
         System.out.println(new Date( ) + "\n");
         
         Thread.sleep(5*60*10);
         System.out.println(new Date( ) + "\n");
         
         long end = System.currentTimeMillis( );
         long diff = end - start;
         System.out.println("Difference is : " + diff);
      } catch (Exception e) {
         System.out.println("Got an exception!");
      }
   }
}

Isso produzirá o seguinte resultado -

Saída

Sun May 03 18:16:51 GMT 2009
Sun May 03 18:16:57 GMT 2009
Difference is : 5993

Classe GregorianCalendar


GregorianCalendar é uma implementação concreta de uma classe Calendar que implementa o calendário Gregoriano normal com o qual você está familiarizado. Não discutimos a classe Calendar neste tutorial, você pode consultar a documentação Java padrão para isso.

O getInstance( ) O método de Calendar retorna um GregorianCalendar inicializado com a data e hora atuais na localidade e fuso horário padrão. GregorianCalendar define dois campos:AD e BC. Estes representam as duas eras definidas pelo calendário gregoriano.

Existem também vários construtores para objetos GregorianCalendar -
Nº Sr. Construtor e Descrição
1
GregorianCalendar()

Constrói um GregorianCalendar padrão usando a hora atual no fuso horário padrão com a localidade padrão.
2
GregorianCalendar(int ano, int mês, int data)

Constrói um GregorianCalendar com a data especificada definida no fuso horário padrão com a localidade padrão.
3
GregorianCalendar(int ano, int mês, int data, int hora, int minuto)

Constrói um GregorianCalendar com a data e hora especificadas definidas para o fuso horário padrão com a localidade padrão.
4
GregorianCalendar(int ano, int mês, int data, int hora, int minuto, int segundo)

Constrói um GregorianCalendar com a data e hora especificadas definidas para o fuso horário padrão com a localidade padrão.
5
GregorianCalendar(Locale aLocale)

Constrói um GregorianCalendar com base na hora atual no fuso horário padrão com a localidade especificada.
6
GregorianCalendar(Fuso horário)

Constrói um GregorianCalendar com base na hora atual no fuso horário determinado com a localidade padrão.
7
GregorianCalendar(TimeZone zone, Locale aLocale)

Constrói um GregorianCalendar com base na hora atual no fuso horário determinado com a localidade especificada.

Aqui está a lista de alguns métodos de suporte úteis fornecidos pela classe GregorianCalendar -
Nº Sr. Método e descrição
1
void add(campo int, valor int)

Adiciona a quantidade de tempo especificada (assinada) ao campo de tempo determinado, com base nas regras do calendário.
2
protected void computeFields()

Converte UTC como milissegundos em valores de campo de hora.
3
protegido void computeTime()

Substitui o calendário Converte os valores do campo de tempo em UTC como milissegundos.
4
boolean equals(Object obj)

Compara este GregorianCalendar com uma referência de objeto.
5
int get(int campo)

Obtém o valor de um determinado campo de tempo.
6
int getActualMaximum(int campo)

Retorna o valor máximo que esse campo pode ter, dada a data atual.
7
int getActualMinimum(int campo)

Retorna o valor mínimo que este campo poderia ter, dada a data atual.
8
int getGreatestMinimum(int campo)

Retorna o valor mínimo mais alto para o campo fornecido, se variar.
9
Data getGregorianChange()

Obtém a data de alteração do Calendário Gregoriano.
10
int getLeastMaximum(int campo)

Retorna o valor máximo mais baixo para o campo fornecido, se variar.
11
int getMaximum(int campo)

Retorna o valor máximo para o campo fornecido.
12
Data getTime()

Obtém a hora atual deste calendário.
13
longo getTimeInMillis()

Obtém a hora atual deste calendário como um longo.
14
Fuso Horário getTimeZone()

Obtém o fuso horário.
15
int getMinimum(int campo)

Retorna o valor mínimo para o campo fornecido.
16
int hashCode()

Substitui hashCode.
17
booleano isLeapYear(int ano)

Determina se o ano fornecido é um ano bissexto.
18
void roll(campo int, boolean up)

Adiciona ou subtrai (para cima/para baixo) uma única unidade de tempo no campo de tempo fornecido sem alterar campos maiores.
19
void set(campo int, valor int)

Define o campo de hora com o valor fornecido.
20
void set(int ano, int mês, int data)

Define os valores para os campos ano, mês e data.
21
void set(int ano, int mês, int data, int hora, int minuto)

Define os valores para os campos ano, mês, data, hora e minuto.
22
void set(int ano, int mês, int data, int hora, int minuto, int segundo)

Define os valores para os campos ano, mês, data, hora, minuto e segundo.
23
void setGregorianChange(Data data)

Define a data de alteração de GregorianCalendar.
24
void setTime(Data data)

Define a hora atual deste calendário com a data fornecida.
25
void setTimeInMillis(long millis)

Define a hora atual deste calendário a partir do valor longo fornecido.
26
void setTimeZone(valor TimeZone)

Define o fuso horário com o valor de fuso horário fornecido.
27
String toString()

Retorna uma representação de string deste calendário.

Exemplo

Demonstração ao vivo
import java.util.*;
public class GregorianCalendarDemo {

   public static void main(String args[]) {
      String months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", 
         "Oct", "Nov", "Dec"};
      
      int year;
      // Create a Gregorian calendar initialized
      // with the current date and time in the
      // default locale and timezone.
      
      GregorianCalendar gcalendar = new GregorianCalendar();
      
      // Display current time and date information.
      System.out.print("Date: ");
      System.out.print(months[gcalendar.get(Calendar.MONTH)]);
      System.out.print(" " + gcalendar.get(Calendar.DATE) + " ");
      System.out.println(year = gcalendar.get(Calendar.YEAR));
      System.out.print("Time: ");
      System.out.print(gcalendar.get(Calendar.HOUR) + ":");
      System.out.print(gcalendar.get(Calendar.MINUTE) + ":");
      System.out.println(gcalendar.get(Calendar.SECOND));

      // Test if the current year is a leap year
      if(gcalendar.isLeapYear(year)) {
         System.out.println("The current year is a leap year");
      }else {
         System.out.println("The current year is not a leap year");
      }
   }
}

Isso produzirá o seguinte resultado -

Saída

Date: Apr 22 2009
Time: 11:25:27
The current year is not a leap year

Para obter uma lista completa de constantes disponíveis na classe Calendar, você pode consultar a documentação Java padrão.

Java

  1. Classe e objeto C#
  2. Como obter data e hora atuais em Python?
  3. Variáveis ​​e literais Java
  4. Expressões, instruções e blocos Java
  5. Classe e objetos Java
  6. Classe abstrata Java e métodos abstratos
  7. Java aninhado e classe interna
  8. Classe Java Singleton
  9. Java joga e joga
  10. Autoboxing e unboxing Java