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 当前年份不是闰年