Latest web development tutorials

Java Data Hora

pacote java.util Data fornece classes para encapsular a data e hora atual. classe Date fornece dois construtores para instanciar um objeto Date.

O primeiro construtor usa a data e hora actuais para inicializar o objeto.

Date( )

O segundo construtor aceita um parâmetro, que é o número de milissegundos desde 1 de janeiro de 1970 de.

Date(long millisec)

Depois que o objeto Date é criado, você pode chamar o método a seguir.

Não. Método e Descrição
1 boolean depois (data Data)
Se esse método é chamado quando o objeto Date após a data especificada retorna verdadeiro, caso contrário, retorna false.
2 boolean antes (data Data)
Se esse método é chamado quando o objeto Date antes da data especificada retorna verdadeiro, caso contrário, retorna false.
3 clone Object ()
Retorna uma cópia deste objeto.
4 int compareTo (data Data)
Compare este método é chamado quando o objeto de data para a data especificada. Retornar 0 quando os dois são iguais. Chamada objeto antes da data especificada retorna um número negativo. Chamada objeto após a data especificada retornou um número positivo.
5 int compareTo (obj Object)
Se obj é do tipo Data, a operação é equivalente a compareTo (Date). Caso contrário, ele lança ClassCastException.
6 boolean equals (data Object)
Quando você chamar esse método eo objeto data é igual à data especificada quando retorna true, caso contrário, retorna false.
7 longa getTime ()
Ele retorna o número de milissegundos desde 1 de janeiro de 1970 00:00:00 GMT representado por este objeto Date.
8 int hashCode ()
Retorna o valor de código de hash para este objeto.
9 setTime void (longo tempo)

Auto 1º de janeiro de 1970 milissegundos 00:00:00 GMT depois tempo para definir a hora ea data.
10 toString String ()
Data de Conversão String representação de objeto, e retorna a string.

Obter a data e hora atual

Java obtém a data e hora atual é muito simples, use o método Data objeto toString () para imprimir a data ea hora atual da seguinte forma:

import java.util.Date;
  
public class DateDemo {
   public static void main(String args[]) {
       // 初始化 Date 对象
       Date date = new Date();
        
       // 使用 toString() 函数显示日期时间
       System.out.println(date.toString());
   }
}

Os exemplos acima são compilados os resultados como se segue:

Mon May 04 09:51:52 CDT 2013

comparar datas

Java utiliza três métodos para comparar as duas datas seguintes:

  • Use o método getTime () para obter duas datas (01 de janeiro de 1970 através do número de milissegundos desde então), e depois comparar os dois valores.
  • Use antes (), depois de () e equals (). Por exemplo, um mês antes de 12 de 18, a nova data (99, 2, 12) .Antes (new Date (99, 2, 18)) retorna true.
  • Uso compareTo (), que é definido pela interface Comparável, classe Data implementa esta interface.

O uso SimpleDateFormat para formatar datas

classe SimpleDateFormat é uma maneira sensível ao local para formatação e as datas de análise. SimpleDateFormat permite selecionar qualquer data formato de usuário personalizada e tempo para executar. Por exemplo:

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));
   }
}

Os exemplos acima são compilados os resultados como se segue:

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

formato de codificação simples DateFormat

Tempo cadeia padrão é usado para especificar o formato da hora. Neste modo, todas as letras ASCII são reservados como cartas de padrão são definidas como se segue:

carta descrição exemplo
G era marca AD
y quatro anos 2001
M mês Julho ou 07
d data mês 10
h AM / PM formato (1 ~ 12) horas 12
H A hora do dia (0 a 23) 22
m O número de minutos 30
s segundos 55
S milissegundos 234
E Dia da semana terça-feira
D Dia do ano 360
F As primeiras semanas do mês da semana 2 (segunda qua em julho)
w As primeiras semanas do ano 40
W As primeiras semanas do mês 1
um AM marca / PM PM
k A hora do dia (1 a 24) 24
K AM / PM formato (0 ~ 11) horas 10
z fuso horário Eastern Standard Time
' delimitador de texto delimitador
" aspas simples `

formatar datas Use printf

método printf pode ser facilmente formatado hora e data. Usar o formato de duas letras, que começa com o t e na tabela a seguir, no final de uma carta. Por exemplo:

import java.util.Date;

public class DateDemo {

  public static void main(String args[]) {
     // 初始化 Date 对象
     Date date = new Date();

     // 使用toString()显示日期和时间
     String str = String.format("Current Date/Time : %tc", date );

     System.out.printf(str);
  }
}

Os exemplos acima são compilados os resultados como se segue:

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

Se você precisa repetir a data de oferta, em seguida, usar esse método para formatar cada parte dela é um pouco complicado. Assim, você pode usar uma seqüência de formato apontou a ser formatado parâmetro índice.

O índice deve imediatamente% para trás, e deve terminar com $. Por exemplo:

import java.util.Date;
  
public class DateDemo {

   public static void main(String args[]) {
       // 初始化 Date 对象
       Date date = new Date();
        
       // 使用toString()显示日期和时间
       System.out.printf("%1$s %2$tB %2$td, %2$tY", 
                         "Due date:", date);
   }
}

Os exemplos acima são compilados os resultados como se segue:

Due date: February 09, 2004

Alternativamente, você pode usar o <flag. Ele mostra parâmetros a serem utilizados novamente previamente formatado. Por exemplo:

import java.util.Date;
  
public class DateDemo {

   public static void main(String args[]) {
       // 初始化 Date 对象
       Date date = new Date();
        
       // 显示格式化时间
       System.out.printf("%s %tB %<te, %<tY", 
                         "Due date:", date);
   }
}

Os exemplos acima são compilados os resultados como se segue:

Due date: February 09, 2004

Os caracteres de conversão de data e hora

personagem descrição exemplo
c Completa Data e Hora Mon 04 de maio 09:51:52 CDT 2009
F ISO formato de data 8601 2004-02-09
D formato de data dos EUA (dia / mês / ano) 02/09/2004
T Tempo 24 horas 18:05:19
r 12 horas 18:05:19
R tempo de 24 horas, não inclui segundos 18:05
Y 4 Ano (com um zero à esquerda) 2004
y Depois de dois anos (com um zero à esquerda) 04
C 2 anos (com um zero à esquerda) 20
B Nome completo do mês fevereiro
b Sigla mês fevereiro
n 2 meses (com um zero à esquerda) 02
d 2 dias (com um zero à esquerda) 03
e 2 dias (sem o 0) 9
Um nome completo Week segunda-feira
um semana Curtas Mon
j 3 anos (com um zero à esquerda) 069
H 2 horas (com um zero à esquerda), 00-23 18
k 2 horas (sem o 0), 0-23 18
Eu 2 horas (com um zero à esquerda), 01-12 06
l 2 horas (sem o 0), 1-12 6
M 2 minutos (com um zero à esquerda) 05
S 2 segundos (com um zero à esquerda) 19
L 3 ms (com um zero à esquerda) 047
N 9 ns (com um zero à esquerda) 047000000
P Capitalizados na tarde de bandeira PM
p Na tarde do logotipo em letras minúsculas pm
z Deslocamento do GMT no RFC 822 Digital -0800
Z fuso horário PST
s O número de segundos desde 1970-01-01 00:00:00 GMT 1078884319
Q Desde 1970-01-01 00:00:00 centavos GMT maravilhosa 1078884319047

Há outra data e hora da classe útil. Para mais detalhes, você pode consultar a documentação padrão Java.


Analisar uma string para um tempo

classe SimpleDateFormat tem alguns métodos adicionais, especialmente parse (), que tentaram seguir o determinado formato de armazenamento objeto SimpleDateFormat para analisar a cadeia. Por exemplo:

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); 
      }
   }
}

Os exemplos acima são compilados os resultados como se segue:

$ java DateDemo
1818-11-11 Parses as Wed Nov 11 00:00:00 GMT 1818
$ java DateDemo 2007-12-01
2007-12-01 Parses as Sat Dec 01 00:00:00 GMT 2007

Java dormente (sleep)

sleep () faz com que o segmento atual para o estado estagnada (bloqueia o segmento atual), de modo que o uso da CPU, o objetivo é manter o atual segmento sozinho ocupar recursos da CPU obtidos no processo de deixar algum tempo ao acaso outro segmento de execução.

Você pode deixar que o programa do sono um milissegundo longo período de tempo ou a qualquer de vida do seu computador. Por exemplo, o seguinte programa vai dormir três segundos:

import java.util.*;
  
public class SleepDemo {
   public static void main(String args[]) {
      try { 
         System.out.println(new Date( ) + "\n"); 
         Thread.sleep(1000*3);   // 休眠3秒
         System.out.println(new Date( ) + "\n"); 
      } catch (Exception e) { 
          System.out.println("Got an exception!"); 
      }
   }
}

Os exemplos acima são compilados os resultados como se segue:

Thu Sep 17 10:20:30 CST 2015

Thu Sep 17 10:20:33 CST 2015

tempo de medição

Aqui está um exemplo que mostra como medir intervalos de tempo (em milissegundos):

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!");
      }
   }
}

Os exemplos acima são compilados os resultados como se segue:

Fri Jan 08 09:48:47 CST 2016

Fri Jan 08 09:48:50 CST 2016

Difference is : 3019

classe Calendar

Agora somos capazes de formatar e criar um objeto de data, mas como podemos definir e recuperar uma parte específica do mesmo os dados actuais, tais como horas, dias, ou minutos? Como podemos nessas partes da data mais ou menos ? a resposta é usar categoria Calendário.

Muitas características poderosas do que a classe Calendar classe Date, mas também na implementação do que o complexo classe Date.

classe Calendário é uma classe abstrata que implementa uma sub-classe específica de objetos na utilização real, a criação de objetos é transparente para o programador só precisa ser criado para usar o método getInstance.

Criar um objeto Calendar que representa a data atual do sistema

Calendar c = Calendar.getInstance();//默认是当前日期

Criar uma data Calendar objeto especificado

Use a classe Calendar representa um determinado momento, você precisa primeiro criar um objeto de calendário e, em seguida, define os parâmetros de data de objeto para ser concluído.

//创建一个代表2009年6月12日的Calendar对象
Calendar c1 = Calendar.getInstance();
c1.set(2009, 6 - 1, 12);

Calendário tipo de classe campo de objeto

tipo de calendário usado na essas constantes representam diferentes significados, muitos pensavam desta classe são realmente utilizados dentro do jdk

constante descrição
Calendar.YEAR anos
Calendar.MONTH mês
Calendar.DATE data
Calendar.DAY_OF_MONTH Data e idêntico ao campos significado acima
Calendar.HOUR hora de 12 horas
Calendar.HOUR_OF_DAY hour 24 horas
Calendar.MINUTE minuto
Calendar.SECOND segundo
Calendar.DAY_OF_WEEK Dia da semana

Definindo informações de objeto de classe Calendar

configurações definidas

Tais como:

Calendar c1 = Calendar.getInstance();

Chamada:

public final void set(int year,int month,int date)
c1.set(2009, 6 - 1, 12);//把Calendar对象c1的年月日分别设这为:2009、6、12

Use as configurações de tipo de campo

Se apenas definir um campo, tais como data-valor pode ser definido através dos seguintes métodos:

public void set(int field,int value)

O objeto Date representa c1 está definido para 10, todos os outros valores são recalculados

c1.set(Calendar.DATE,10);

O objeto representa o c1 ano está definido para 2008, todos os outros valores são recalculados

c1.set(Calendar.YEAR,2008);

Significado de outras propriedades de campo definido de forma

Adicionar Configuração

Calendar c1 = Calendar.getInstance();

A data prevista, acrescido de 10 C1, C1 também é expressa como 10 dias após a data, todos os outros valores são recalculados

c1.add(Calendar.DATE, 10);

A data-alvo menos 10 C1, C1 também se expressa como uma data há 10 dias, todos os outros valores serão recalculados

<pre>c1.add(Calendar.DATE, -10);

acrescentar significado outras propriedades de campo para

classe Calendar objeto para obter informações

Calendar c1 = Calendar.getInstance();
// 获得年份
int year = c1.get(Calendar.YEAR);
// 获得月份
int month = c1.get(Calendar.MONTH) + 1;
// 获得日期
int date = c1.get(Calendar.DATE);
// 获得小时
int hour = c1.get(Calendar.HOUR_OF_DAY);
// 获得分钟
int minute = c1.get(Calendar.MINUTE);
// 获得秒
int second = c1.get(Calendar.SECOND);
// 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)
int day = c1.get(Calendar.DAY_OF_WEEK);

classe GregorianCalendar

classe Calendário implementa o Calendário Gregoriano, classe GregorianCalendar Calendar é uma implementação concreta.

Calendário de getInstance () retorna um padrão com a zona local e hora atual inicializado GregorianCalendar objeto. GregorianCalendar define dois campos: AD e BC. Estes representam dois calendário definido época.

Listados abaixo são um construtor GregorianCalendar objeto alguns:

Não. Construtor e descrição
1 GregorianCalendar ()
Quando você tem o fuso horário padrão localidade padrão Constrói uma corrente GregorianCalendar padrão.
2 GregorianCalendar (ano int, int mês, data int)
Quando você tem a zona localidade padrão padrão Constrói um GregorianCalendar com o determinado conjunto data
3 GregorianCalendar (ano int, int mês, data int, int hora, int minuto)
Ter um fuso horário padrão localidade padrão para GregorianCalendar Constrói uma dada configurações de data e hora.
4 GregorianCalendar (int ano, mês int, data int, int hora, int minuto, segundo int)
Ter um fuso horário padrão localidade padrão para GregorianCalendar Constrói uma dada configurações de data e hora.
5 GregorianCalendar (Locale aLocale)
Quando você tem que definir a área da localidade padrão Constrói uma hora atuais com base GregorianCalendar.
6 GregorianCalendar (zona de fuso horário)
Na zona determinado momento localidade padrão construir um GregorianCalendar baseado no tempo atual.
7 GregorianCalendar (zona de fuso horário, Locale aLocale)
Em um determinado local determinado fuso horário Constrói um GregorianCalendar baseado no tempo atual.

Aqui está uma lista de classe GregorianCalendar fornece alguns métodos úteis:

Não. Método e Descrição
1 Void Adicionar (campo int, montante int )
De acordo com as regras do calendário especificados (assinado) quantidade de tempo para o campo determinado calendário.
2 computeFields protected void ()
UTC valor limite de tempo de conversão ms
3 protegidas computeTime void ()
Cobrindo Calendar, Converte valores de campo tempo para UTC como milissegundos
4 boolean equals (Object obj)
Compara essa GregorianCalendar ao objeto especificado.
5 int get (int field)
Obtém o valor do tempo do campo especificado
6 int getActualMaximum (int campo)
Retorna a data atual, o valor máximo de um determinado campo
7 int getActualMinimum (int campo)
Retorna a data atual, o valor mínimo de um determinado campo
8 int getGreatestMinimum (int campo)
GregorianCalendar Retorna o maior valor mínimo para o campo determinado calendário.
9 Data getGregorianChange ()
Obter data de alteração gregoriano.
10 int getLeastMaximum (int campo)
Retorna essa instância GregorianCalendar de um determinado campo calendário o menor valor máximo
11 int getMaximum (int campo)
Retorna exemplo GregorianCalendar dado o campo calendário máxima.
12 Data getTime ()
Obter o tempo de calendário atual.
13 getTimeInMillis longos ()
Obter um calendário com uma representação de número inteiro longo do tempo atual
14 TimeZone getTimeZone ()
Obter fuso horário.
15 int getMinimum (int campo)
Voltar para o valor mínimo de um determinado campo.
16 int hashCode ()
Reescrever hashCode.
17 boolean IsLeapYear (ano inteiro)
Determina se um determinado ano é um ano bissexto.
18 rolo void (int field, boolean up )
No campo de tempo dado para adicionar ou subtrair uma única unidade de tempo (para cima / baixo), sem alterar campos maiores.
19 conjunto void (int field, int valor )
Com o campo determinado valor de tempo.
20 conjunto void (int ano, mês int , data int)
Ajuste o ano, o valor de mês e dia.
21 conjunto void (int ano, mês int , data int, int hora, int minuto)
Definir o ano, mês, dia, hora, valor minuto.
22 conjunto void (int ano, mês int , data int, int hora, int minuto, segundo int)
Defina o ano, hora, minuto e segundo valores do mês, dia.
23 vazio setGregorianChange (data Data)
Define a data de alteração GregorianCalendar.
24 vazio setTime (data Data)
Com o tempo atual determinado conjunto de Calendário data.
25 setTimeInMillis void (longa Millis)
Com um número determinado de tempo tipo é o tempo atual conjunto de milissegundos do Calendário.
26 vazio setTimeZone (valor de fuso horário)
Com configurações de fuso horário para o fuso horário atual.
27 toString String ()
Retorna uma string que representa o calendário.

Exemplos

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;
      // 初始化 Gregorian 日历
      // 使用当前时间和日期
      // 默认为本地时间和时区
      GregorianCalendar gcalendar = new GregorianCalendar();
      // 显示当前时间和日期的信息
      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));
      
      // 测试当前年份是否为闰年
      if(gcalendar.isLeapYear(year)) {
         System.out.println("当前年份是闰年");
      }
      else {
         System.out.println("当前年份不是闰年");
      }
   }
}

Os exemplos acima são compilados os resultados como se segue:

Date: Apr 22 2009
Time: 11:25:27
当前年份不是闰年