El mejor tutorial de Java Fecha Hora en 2024. En este tutorial podrás aprender Obtener la fecha y la hora actual,Comparar fechas,El uso de SimpleDateFormat fechas de formato,formato de codificación simple DateFormat,formato a las fechas uso printf,Los caracteres de conversión de fecha y hora,Analizar una cadena a la vez,Java latente (sueño),tiempo de medición,clase Calendario,clase GregorianCalendar,
Fecha paquete java.util ofrece clases para encapsular la fecha y la hora actuales. clase Date proporciona dos constructores para crear instancias de un objeto Date.
El primer constructor utiliza la fecha y hora actuales para inicializar el objeto.
Date( )
El segundo constructor acepta un parámetro, que es el número de milisegundos desde 1 de enero de 1970 del.
Date(long millisec)
Una vez creado el objeto Date, puede llamar al siguiente método.
No. | Método y Descripción |
---|---|
1 | boolean después de (fecha Fecha) Si este método se llama cuando el objeto Date después de la fecha especificada devuelve verdadero, de lo contrario, devuelve false. |
2 | boolean antes del (fecha Fecha) Si este método se llama cuando el objeto Date antes de la fecha especificada devuelve verdadero, de lo contrario, devuelve false. |
3 | clon Object () Devuelve una copia de este objeto. |
4 | int compareTo (fecha Fecha) Comparar este método es llamado cuando el objeto de fecha para la fecha especificada. Devolver 0 cuando los dos son iguales. Llame objeto antes de la fecha especificada devuelve un número negativo. Llame objeto después de la fecha especificada devuelve un número positivo. |
5 | int compareTo (Object obj) Si obj es de tipo Fecha, la operación es equivalente a compareTo (Fecha). De lo contrario, se lanza ClassCastException. |
6 | boolean equals (Object) de fecha Cuando se llama a este método y el objeto Date es igual a la fecha especificada cuando vuelva la verdad, de lo contrario devuelve false. |
7 | getTime largo () Devuelve el número de milisegundos desde 1 de enero 1970 00:00:00 GMT representado por este objeto Date. |
8 | int hashCode () Devuelve el valor de código hash para este objeto. |
9 | setTime vacío (mucho tiempo) Yo 1 de enero de 1970 00:00:00 GMT milisegundos más tarde el tiempo para ajustar la hora y la fecha. |
10 | String toString () Fecha de Conversión representación del objeto String, y devuelve la cadena. |
Java se pone la fecha y hora actuales es muy simple, utilice el método objeto de fecha toString () para imprimir la fecha y la hora actuales de la siguiente manera:
import java.util.Date; public class DateDemo { public static void main(String args[]) { // 初始化 Date 对象 Date date = new Date(); // 使用 toString() 函数显示日期时间 System.out.println(date.toString()); } }
Los ejemplos anteriores resultados compilados son los siguientes:
Mon May 04 09:51:52 CDT 2013
Java utiliza tres métodos para comparar las dos fechas siguientes:
SimpleDateFormat clase es una manera sensible a la localidad para el formato y las fechas de análisis sintáctico. SimpleDateFormat le permite seleccionar cualquier fecha formato de usuario personalizada y la hora de ejecutar. Por ejemplo:
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)); } }
Los ejemplos anteriores resultados compilados son los siguientes:
Current Date: Sun 2004.07.18 at 04:14:09 PM PDT
cadena de patrón de tiempo se utiliza para especificar el formato de hora. En este modo, todas las letras ASCII se reservan como se definen cartas patrón como sigue:
carta | descripción | ejemplo |
---|---|---|
G | era marca | AD |
y | cuatro años | 2001 |
M | mes | Julio o 07 |
d | fecha mes | 10 |
h | AM / PM formato (1 ~ 12 horas) | 12 |
H | La hora del día (0 a 23) | 22 |
m | El número de minutos | 30 |
s | segundos | 55 |
S | milisegundos | 234 |
E | Día de la semana | martes |
D | Los días del año | 360 |
F | Las primeras semanas del mes de la semana | 2 (segundo miércoles en julio) |
w | Las primeras semanas del año | 40 |
W | Las primeras semanas del mes | 1 |
una | AM / PM marca | primer ministro |
k | La hora del día (1 a 24) | 24 |
K | AM / PM formato (0 ~ 11) horas | 10 |
z | huso horario | Eastern Standard Time |
' | delimitador de texto | delimitador |
" | Las comillas simples | ` |
printf método puede ser fácilmente hora y la fecha formateada. Usar formato de dos letras, empieza con T y en la siguiente tabla al final de una carta. Por ejemplo:
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); } }
Los ejemplos anteriores resultados compilados son los siguientes:
Current Date/Time : Sat Dec 15 16:37:57 MST 2012
Si es necesario repetir la fecha de la oferta, a continuación, utilizar este método para dar formato a cada parte de ella se complica un poco. Por lo tanto, se puede utilizar una cadena de formato señaló que el parámetro índice de formateado.
El índice debe inmediatamente detrás%, y debe terminar con $. Por ejemplo:
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); } }
Los ejemplos anteriores resultados compilados son los siguientes:
Due date: February 09, 2004
Alternativamente, se puede utilizar el <bandera. Muestra los parámetros que se utilizarán de nuevo previamente formateada. Por ejemplo:
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); } }
Los ejemplos anteriores resultados compilados son los siguientes:
Due date: February 09, 2004
carácter | descripción | ejemplo |
c | Fecha y hora completa | Sab Abr 04 09:51:52 CDT 2009 |
F | ISO 8601 formato de fecha | 2004-02-09 |
D | formato de fecha de EE.UU. (mes / día / año) | 02/09/2004 |
T | Tiempo 24 horas | 18:05:19 |
r | de 12 horas | 06:05:19 pm |
R | tiempo de 24 horas, no incluye segundos | 18:05 |
Y | 4 año (con un cero a la izquierda) | 2004 |
y | Después de dos años (con un cero a la izquierda) | 04 |
C | hace 2 años (con un cero a la izquierda) | 20 |
B | Nombre completo del mes | febrero |
b | mes Acrónimo | febrero |
n | 2 meses (con un cero a la izquierda) | 02 |
d | 2 días (con un cero a la izquierda) | 03 |
e | 2 días (sin el 0) | 9 |
la | Semana nombre completo | lunes |
una | semana corta | Mon |
j | 3 años (con un cero a la izquierda) | 069 |
H | 2 horas (con un cero a la izquierda), 00-23 | 18 |
k | 2 horas (sin el 0), 0-23 | 18 |
yo | 2 horas (con un cero a la izquierda), 01-12 | 06 |
l | 2 horas (sin el 0), 1-12 | 6 |
M | 2 minutos (con un cero a la izquierda) | 05 |
S | 2 segundos (con un cero a la izquierda) | 19 |
L | 3 ms (con un cero a la izquierda) | 047 |
N | 9 ns (con un cero a la izquierda) | 047000000 |
P | Capitalizado en la tarde del pabellón | primer ministro |
p | En la tarde del logotipo de minúsculas | pm |
z | Desplazamiento de GMT en el RFC 822 Digital | -0800 |
Z | huso horario | PST |
s | El número de segundos desde el 1970-01-01 00:00:00 GMT | 1078884319 |
Q | Desde 1970-01-01 00:00:00 GMT centavos maravillosa | 1078884319047 |
Hay otra fecha y hora de la clase útil. Para más detalles, puede hacer referencia a la documentación estándar de Java.
SimpleDateFormat clase tiene algunos métodos adicionales, especialmente parse (), que trataron de seguir el formato de almacenamiento de objetos SimpleDateFormat dado a analizar la cadena. Por ejemplo:
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); } } }
Los ejemplos anteriores resultados compilados son los siguientes:
$ 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
sleep () hace que el hilo actual en el estado de estancamiento (bloquea el hilo actual), por lo que el uso de la CPU, el propósito es mantener el hilo actual solo ocupan recursos de la CPU obtenidos en el proceso de dejar un poco de tiempo al azar otro hilo de ejecución.
Puede dejar dormir al programa de un milisegundo largo período de tiempo o de cualquiera de la vida de su equipo. Por ejemplo, el siguiente programa va a dormir tres 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!"); } } }
Los ejemplos anteriores resultados compilados son los siguientes:
Thu Sep 17 10:20:30 CST 2015 Thu Sep 17 10:20:33 CST 2015
He aquí un ejemplo que muestra cómo medir intervalos de tiempo (en milisegundos):
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!"); } } }
Los ejemplos anteriores resultados compilados son los siguientes:
Fri Jan 08 09:48:47 CST 2016 Fri Jan 08 09:48:50 CST 2016 Difference is : 3019
Ahora estamos en condiciones para dar formato y crear un objeto de fecha, pero ¿cómo podemos establecer y recuperar una parte específica de la misma datos de fecha, tales como horas, días o minutos? ¿Cómo podemos, en estas partes de la fecha más o menos ? la respuesta es utilizar la categoría Calendario.
Muchas características de gran alcance que la clase Calendar clase Date, sino también en la implementación de la clase Date compleja.
Calendario de clase es una clase abstracta que implementa una subclase específica de los objetos de uso real, la creación de objetos es transparente para el programador sólo necesita ser creado para utilizar el método getInstance.
Calendar c = Calendar.getInstance();//默认是当前日期
Utilice la clase Calendar representa un momento determinado, es necesario crear primero un objeto Calendar, y luego ajusta los parámetros de fecha objeto de completar.
//创建一个代表2009年6月12日的Calendar对象 Calendar c1 = Calendar.getInstance(); c1.set(2009, 6 - 1, 12);
tipo de calendario utilizado en estas constantes representan diferentes significados, muchos pensaron que esta clase se utiliza realmente en el JDK
constante | descripción |
---|---|
Calendar.YEAR | años |
Calendar.MONTH | mes |
Calendar.DATE | fecha |
Calendar.DAY_OF_MONTH | Fecha, e idénticas a los campos significado anteriormente |
Calendar.HOUR | horas 12 horas |
Calendar.HOUR_OF_DAY | horas 24 horas |
Calendar.MINUTE | minuto |
Calendar.SECOND | segundo |
Calendar.DAY_OF_WEEK | Día de la semana |
configuraciones conjunto
Tales como:
Calendar c1 = Calendar.getInstance();
llame a:
public final void set(int year,int month,int date)
c1.set(2009, 6 - 1, 12);//把Calendar对象c1的年月日分别设这为:2009、6、12
Utilice la configuración del tipo de campo
Si sólo se establece un campo, como la fecha valor se puede ajustar mediante los siguientes métodos:
public void set(int field,int value)
El objeto Date representa alquilo C1 se establece en 10, todos los demás valores se recalculan
c1.set(Calendar.DATE,10);
El objeto representa la c1 año se establece en 2008, todos los demás valores se recalculan
c1.set(Calendar.YEAR,2008);
Significado de otras propiedades de campo establece de modo
Añadir configuración
Calendar c1 = Calendar.getInstance();
La fecha prevista más el 10 C1, C1 también se expresa como 10 días después de la fecha, todos los demás valores se recalculan
c1.add(Calendar.DATE, 10);
La fecha objetivo menos 10 C1 y C1 se expresa también como una fecha de hace 10 días, se volverá a calcular todos los otros valores
<pre>c1.add(Calendar.DATE, -10);
añadir significado otras propiedades de campo de modo
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);
Calendario de clase implementa el calendario gregoriano, clase GregorianCalendar Calendario es una aplicación concreta.
Calendario de getInstance () devuelve un valor predeterminado con la zona local y la hora actuales inicializado objeto GregorianCalendar. GregorianCalendar define dos campos: AD y BC. Estos representan dos de calendario define la época.
A continuación se enumeran algunos constructor de objetos GregorianCalendar:
No. | Constructor y Descripción |
1 | GregorianCalendar () Cuando se tiene la zona horaria predeterminada regional predeterminada Construye una corriente GregorianCalendar predeterminado. |
2 | GregorianCalendar (int año, int mes, fecha int) Cuando se tiene la zona predeterminada por defecto la configuración regional Construye un GregorianCalendar con el conjunto fecha dada |
3 | GregorianCalendar (int año, int mes, fecha, int hora, int minuto) Que tiene una zona horaria predeterminada regional predeterminada para GregorianCalendar construye una fecha y hora determinadas. |
4 | GregorianCalendar (int año, int mes, fecha, int hora, minuto int, int segundo) Que tiene una zona horaria predeterminada regional predeterminada para GregorianCalendar construye una fecha y hora determinadas. |
5 | GregorianCalendar (Locale aLocale) Cuando se tiene que establecer el área de configuración regional predeterminada Construye una hora actuales en función GregorianCalendar. |
6 | GregorianCalendar (zona de zona horaria) En la zona horaria determinada configuración regional predeterminada construir un GregorianCalendar basado en la hora actual. |
7 | GregorianCalendar (zona de zona horaria, Locale aLocale) En una zona horaria determinada localidad dada Construye un GregorianCalendar basado en la hora actual. |
Aquí está una lista de clase GregorianCalendar proporciona algunos métodos útiles:
No. | Método y Descripción |
1 | void add (int campo, cantidad int ) De acuerdo con las normas especificadas calendario (firmado) cantidad de tiempo para el campo de calendario dado. |
2 | computeFields protected void () UTC conversión ms valor umbral de tiempo |
3 | protegida computeTime void () Cubriendo Calendario, Convierte los valores de campo de tiempo a UTC como milisegundos |
4 | boolean equals (Object obj) Compara esta GregorianCalendar al objeto especificado. |
5 | int get (int campo) Obtiene el valor de tiempo del campo especificado |
6 | int getActualMaximum (int campo) Devuelve la fecha actual, el valor máximo de un campo dado |
7 | int getActualMinimum (int campo) Devuelve la fecha actual, el valor mínimo de un campo dado |
8 | int getGreatestMinimum (int campo) GregorianCalendar Devuelve el valor mínimo más alto para el campo de calendario dado. |
9 | Fecha getGregorianChange () Obtener fecha de cambio gregoriano. |
10 | int getLeastMaximum (int campo) Devuelve este caso GregorianCalendar de un campo de calendario dado el valor máximo más bajo |
11 | int getMaximum (int campo) Devuelve ejemplo GregorianCalendar dado el máximo campo de calendario. |
12 | Fecha getTime () Obtener la hora actual del calendario. |
13 | getTimeInMillis largos () Obtener un calendario con una representación de entero largo de la hora actual |
14 | GetTimeZone zona horaria () Obtener zona horaria. |
15 | int getMinimum (int campo) Volver al valor mínimo de un campo determinado. |
16 | int hashCode () Reescribir código hash. |
17 | booleano ESAÑOBISIESTO (int año) Determina si el año determinado es un año bisiesto. |
18 | rollo vacío (campo int, boolean arriba ) En el campo de tiempo determinado para sumar o restar una única unidad de tiempo (arriba / abajo), sin cambiar los campos más grandes. |
19 | conjunto vacío (campo int, int value ) Con el campo de valor de tiempo especificado. |
20 | conjunto vacío (int año, int mes , int fecha) Ajuste el año, el valor del mes y el día. |
21 | conjunto vacío (int año, int mes , fecha, int hora, int minuto) Ajustar el año, mes, día, hora, minuto valor. |
22 | conjunto vacío (int año, int mes , fecha, int hora, minuto int, int segundo) Ajuste el año, hora, minuto y segundo valores del mes, día. |
23 | setGregorianChange vacío (fecha Fecha) Establece la fecha de cambio GregorianCalendar. |
24 | setTime vacío (fecha Fecha) Con el tiempo actual del conjunto dado fecha de calendario. |
25 | setTimeInMillis void (largo) Millis Con un número dado de tipo long es la hora actual del conjunto de milisegundos Calendario. |
26 | settimezone vacío (valor de zona horaria) Con los ajustes de zona horaria a la zona horaria actual. |
27 | String toString () Devuelve una cadena que representa el calendario. |
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("当前年份不是闰年"); } } }
Los ejemplos anteriores resultados compilados son los siguientes:
Date: Apr 22 2009 Time: 11:25:27 当前年份不是闰年