Servlets - Data de Manuseio

Uma das vantagens mais importantes de usar Servlet é que você pode usar a maioria dos métodos disponíveis no núcleo do Java. Este tutorial o levará através do Java fornecidoDate classe que está disponível em java.util pacote, esta classe encapsula a data e hora atuais.

A classe Date oferece suporte a dois construtores. O primeiro construtor inicializa o objeto com a data e hora atuais.

Date( )

O construtor a seguir aceita um argumento igual ao número de milissegundos decorridos desde a meia-noite de 1º de janeiro de 1970

Date(long millisec)

Depois de ter um objeto Date disponível, você pode chamar qualquer um dos seguintes métodos de suporte para brincar com datas -

Sr. Não. Métodos e Descrição
1

boolean after(Date date)

Retorna verdadeiro se o objeto de chamada Date contiver uma data posterior à especificada por data; caso contrário, retorna falso.

2

boolean before(Date date)

Retorna verdadeiro se o objeto Date de chamada contiver uma data anterior à especificada por data; caso contrário, retorna falso.

3

Object clone( )

Duplica o objeto Date de chamada.

4

int compareTo(Date date)

Compara o valor do objeto de chamada com o de data. Retorna 0 se os valores forem iguais. Retorna um valor negativo se o objeto de chamada for anterior à data. Retorna um valor positivo se o objeto de chamada 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(Object date)

Retorna verdadeiro se o objeto de invocação Date contém a mesma hora e data que aquele especificado por data; caso contrário, retorna falso.

7

long 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 de chamada.

9

void setTime(long time)

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 de chamada Date em uma string e retorna o resultado.

Obtendo data e hora atuais

É muito fácil obter a data e a hora atuais no Java Servlet. Você pode usar um objeto Date simples com o método toString () para imprimir a data e hora atuais da seguinte maneira -

// Import required java libraries
import java.io.*;
import java.util.Date;
import javax.servlet.*;
import javax.servlet.http.*;
 
// Extend HttpServlet class
public class CurrentDate extends HttpServlet {
 
   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      
      // Set response content type
      response.setContentType("text/html");
 
      PrintWriter out = response.getWriter();
      String title = "Display Current Date & Time";
      Date date = new Date();
      String docType = "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";
      
      out.println(docType +
         "<html>\n" +
            "<head><title>" + title + "</title></head>\n" +
            "<body bgcolor = \"#f0f0f0\">\n" +
               "<h1 align = \"center\">" + title + "</h1>\n" +
               "<h2 align = \"center\">" + date.toString() + "</h2>\n" +
            "</body>
         </html>"
      );
   }
}

Agora, vamos compilar o servlet acima e criar entradas apropriadas em web.xml e, em seguida, chamar esse servlet usando a URL http: // localhost: 8080 / CurrentDate. Isso produziria o seguinte resultado -

Display Current Date & Time

Mon Jun 21 21:46:49 GMT+04:00 2010

Tente atualizar o URL http: // localhost: 8080 / CurrentDate e você encontrará a diferença em segundos sempre que fizer a atualização.

Comparação de Data

Como mencionei acima, você pode usar todos os métodos Java disponíveis em seu Servlet. Caso você precise comparar duas datas, a seguir estão os métodos -

  • Você pode usar getTime () para obter o número de milissegundos decorridos desde a meia-noite de 1º de janeiro de 1970 para ambos os objetos e, em seguida, comparar esses dois valores.

  • Você pode usar os métodos before (), after () e equals (). Como o 12º dia do mês vem antes do 18º, por exemplo, new Date (99, 2, 12) .before (new Date (99, 2, 18)) retorna true.

  • Você pode usar o método compareTo (), que é definido pela interface Comparable e implementado por Date.

Formatação de data usando SimpleDateFormat

SimpleDateFormat é uma classe concreta para formatar e analisar datas de maneira sensível ao local. SimpleDateFormat permite que você comece escolhendo quaisquer padrões definidos pelo usuário para a formatação de data e hora.

Vamos modificar o exemplo acima da seguinte forma -

// Import required java libraries
import java.io.*;
import java.text.*;
import java.util.Date;
import javax.servlet.*;
import javax.servlet.http.*;
 
// Extend HttpServlet class
public class CurrentDate extends HttpServlet {
 
   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      
      // Set response content type
      response.setContentType("text/html");
 
      PrintWriter out = response.getWriter();
      String title = "Display Current Date & Time";
      Date dNow = new Date( );
      SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
      String docType = "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";
      
      out.println(docType +
         "<html>\n" +
            "<head><title>" + title + "</title></head>\n" +
            "<body bgcolor = \"#f0f0f0\">\n" +
               "<h1 align = \"center\">" + title + "</h1>\n" +
               "<h2 align = \"center\">" + ft.format(dNow) + "</h2>\n" +
            "</body>
         </html>"
      );
   }
}

Compile o servlet acima mais uma vez e chame esse servlet usando a URL http: // localhost: 8080 / CurrentDate. Isso produziria o seguinte resultado -

Display Current Date & Time

Mon 2010.06.21 at 10:06:44 PM GMT+04:00

Códigos de formato simples de DateFormat

Para especificar o formato da 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 da seguinte forma -

Personagem Descrição Exemplo
G Designador era DE ANÚNCIOS
y Ano em quatro dígitos 2001
M Mês no ano Julho ou 07
d Dia no mês 10
h Hora em AM / PM (1 ~ 12) 12
H Hora do dia (0 ~ 23) 22
m Minuto em hora 30
s Segundo em minuto 55
S Milissegundo 234
E Dia da semana terça
D Dia no ano 360
F Dia da semana no mês 2 (segunda quarta-feira em julho)
W Semana no ano 40
W Semana no mês 1
uma Marcador AM / PM PM
k Hora do dia (1 ~ 24) 24
K Hora em AM / PM (0 ~ 11) 10
z Fuso horário Hora Padrão do Leste
' Escape para texto Delimitador
" Citação única `

Para obter uma lista completa de métodos constantes disponíveis para manipular data, você pode consultar a documentação Java padrão.