Data e hora Java: SimpleDateFormat, data atual e comparação

Neste tutorial, você aprenderá –

Vamos primeiro entender os parâmetros que consistem em um Data.

Como usar data em Java

Ele conterá principalmente -

  • A ano (em 2 ou 4 dígitos)
  • A mês (em 2 dígitos, nas primeiras 3 letras do mês ou na palavra inteira do mês).
  • A dados (será a data real do mês).
  • A dia (o dia na data especificada – como domingo, segunda, terça, etc.)

No que diz respeito aos sistemas informáticos, existem vários parâmetros que podem ser utilizados para associar a uma data. Nós os veremos no later partes deste tópico.

Exibir data em Java

Agora vamos ver como Java nos fornece a data. Primeiro, veremos como obter a data atual-

Java fornece uma classe Date no pacote java.util. O pacote fornece vários métodos para brincar com a data.

Você pode usar o objeto Date invocando o construtor da classe Date da seguinte maneira:

import java.util.Date;
class Date_Ex1 {
 public static void main(String args[]) {
  // Instantiate a Date object by invoking its constructor
  Date objDate = new Date();
  // Display the Date & Time using toString()
  System.out.println(objDate.toString());
 }
}

Saída:

Wed Nov 29 06:36:22 UTC 2017

No exemplo acima, data mostrada no formato padrão. Se quisermos mostrar a data e a hora em outro formato, primeiro entenda a formatação da data.

SimpleDateFormat: analisar e formatar datas

Todos vocês devem ter aprendido o alfabeto no jardim de infância….

Vamos agora aprender o ABC do formato da data.

Carta Componente de data ou hora Exemplos
G Designador de era AD
y Ano 2018
M Mês no ano Julho ou julho ou 07
w Semana no ano 27
W Semana no mês 2
D Dia no ano 189
d Dia no mês 10
F Dia da semana no mês 2
E Nome do dia na semana Terça ou Terça
u Número do dia da semana (1 = Monday, …, 7 = Domingo) 1
a Marcador am / pm PM
H Hora do dia (0-23) 0
k Hora do dia (1-24) 24
K Hora em am / pm (0-11) 0
h Hora em am / pm (1-12) 12
m Minuto em hora 30
s Segundo em minuto 55
S Milissegundo 978
z fuso horário Hora padrão do Pacífico; PST; GMT-08: 00
Z fuso horário -0800
X fuso horário -08 ou -0800 ou -08:00

Não se preocupe, você não precisa se lembrar de tudo isso, eles podem ser consultados sempre que você precisar formatar uma data específica.

Como usar o SimpleDateFormat?

Java fornece uma classe chamada SimpleDateFormat que permite formatar e analisar datas conforme seus requisitos.

Você pode usar os caracteres acima para especificar o formato-

Por exemplo:

1) Formato de data necessário: 2012.10.23/20/20 45:XNUMX:XNUMX PST

O formato de data apropriado especificado será- aaaa.MM.dd HH:mm:ss zzz

2) Formato de data necessário:09:30:00 AM 23-May-2012

O formato de data apropriado especificado será-hh:mm:ss a dd-MMM-aaaa

Dica: Tenha cuidado com a capitalização das letras. Se você confundir M com m, obterá resultados indesejados!

Vamos aprender isso com um exemplo de código.

import java.text.SimpleDateFormat;
import java.util.Date;
class TestDates_Format {
 public static void main(String args[]) {
  Date objDate = new Date(); // Current System Date and time is assigned to objDate
  System.out.println(objDate);
  String strDateFormat = "hh:mm:ss a dd-MMM-yyyy"; //Date format is Specified
  SimpleDateFormat objSDF = new SimpleDateFormat(strDateFormat); //Date format string is passed as an argument to the Date format object
  System.out.println(objSDF.format(objDate)); //Date formatting is applied to the current date
 }
}

Saída:

Wed Nov 29 06:31:41 UTC 2017
06:31:41 AM 29-Nov-2017

Exemplo de comparação de datas

Exemplo de comparação de datas

O método mais útil de comparar datas é usar o método – compareTo()

Vamos dar uma olhada no trecho de código abaixo-

import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.Date;

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

  SimpleDateFormat objSDF = new SimpleDateFormat("dd-mm-yyyy");
  Date dt_1 = objSDF.parse("20-08-1981");
  Date dt_2 = objSDF.parse("12-10-2012");

  System.out.println("Date1 : " + objSDF.format(dt_1));
  System.out.println("Date2 : " + objSDF.format(dt_2));

  if (dt_1.compareTo(dt_2) > 0) {
   System.out.println("Date 1 occurs after Date 2");
  } // compareTo method returns the value greater than 0 if this Date is after the Date argument.
  else if (dt_1.compareTo(dt_2) < 0) {
   System.out.println("Date 1 occurs before Date 2");
  } // compareTo method returns the value less than 0 if this Date is before the Date argument;
  else if (dt_1.compareTo(dt_2) == 0) {
   System.out.println("Both are same dates");
  } // compareTo method returns the value 0 if the argument Date is equal to the second Date;
  else {
   System.out.println("You seem to be a time traveller !!");
  }
 }
}

Saída:

Date1 : 20-08-1981
Date2 : 12-10-2012
Date 1 occurs before Date 2