Solución:
Los formatos de fecha y hora se describen a continuación
SimpleDateFormat (Java Platform SE 7) – Patrones de fecha y hora
Podría haber n
Número de formatos que puede realizar. ex – dd/MM/yyyy
o YYYY-'W'ww-u
o puede mezclar y combinar las letras para lograr su patrón requerido. Las letras del patrón son las siguientes.
-
G
– Designador de era (AD) -
y
– Año (1996; 96) -
Y
– Semana Año (2009; 09) -
M
– Mes del año (julio; julio; 07) -
w
– Semana del año (27) -
W
– Semana en mes (2) -
D
– Día del año (189) -
d
– Día del mes (10) -
F
– Día de la semana en el mes (2) -
E
– Nombre del día en la semana (martes; martes) -
u
– Número de día de la semana (1 = lunes, …, 7 = domingo) -
a
– Marcador AM / PM -
H
– Hora del día (0-23) -
k
– Hora del día (1-24) -
K
– Hora en am / pm (0-11) -
h
– Hora en am / pm (1-12) -
m
– Minuto en hora (30) -
s
– Segundo en minuto (55) -
S
– Milisegundo (978) -
z
– Zona horaria general (hora estándar del Pacífico; PST; GMT-08: 00) -
Z
– Zona horaria RFC 822 (-0800) -
X
– Zona horaria ISO 8601 (-08; -0800; -08: 00)
Analizar:
2000-01-23T04: 56: 07.000 + 0000
Usar:
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Permítanme arrojar un código de ejemplo que obtuve de http://www3.ntu.edu.sg/home/ehchua/programming/java/DateTimeCalendar.html Luego, puede jugar con diferentes opciones hasta que lo entienda.
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateTest {
public static void main(String[] args) {
Date now = new Date();
//This is just Date's toString method and doesn't involve SimpleDateFormat
System.out.println("toString(): " + now); // dow mon dd hh:mm:ss zzz yyyy
//Shows "Mon Oct 08 08:17:06 EDT 2012"
SimpleDateFormat dateFormatter = new SimpleDateFormat("E, y-M-d 'at' h:m:s a z");
System.out.println("Format 1: " + dateFormatter.format(now));
// Shows "Mon, 2012-10-8 at 8:17:6 AM EDT"
dateFormatter = new SimpleDateFormat("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
System.out.println("Format 2: " + dateFormatter.format(now));
// Shows "Mon 2012.10.08 at 08:17:06 AM EDT"
dateFormatter = new SimpleDateFormat("EEEE, MMMM d, yyyy");
System.out.println("Format 3: " + dateFormatter.format(now));
// Shows "Monday, October 8, 2012"
// SimpleDateFormat can be used to control the date/time display format:
// E (day of week): 3E or fewer (in text xxx), >3E (in full text)
// M (month): M (in number), MM (in number with leading zero)
// 3M: (in text xxx), >3M: (in full text full)
// h (hour): h, hh (with leading zero)
// m (minute)
// s (second)
// a (AM/PM)
// H (hour in 0 to 23)
// z (time zone)
// (there may be more listed under the API - I didn't check)
}
}
¡Buena suerte!
java.time
ACTUALIZAR
Las otras preguntas están pasadas de moda. Las terribles clases heredadas como SimpleDateFormat
fueron suplantados hace años por los modernos java.time clases.
Personalizado
Para definir sus propios patrones de formato personalizados, los códigos en DateTimeFormatter
son similares pero no exactamente iguales a los códigos de SimpleDateFormat
. Asegúrese de estudiar la documentación. Y busque Stack Overflow para muchos ejemplos.
DateTimeFormatter f =
DateTimeFormatter.ofPattern(
"dd MMM uuuu" ,
Locale.ITALY
)
;
Estándar ISO 8601
El estándar ISO 8601 define formatos para muchos tipos de valores de fecha y hora. Estos formatos están diseñados para el intercambio de datos, y pueden ser analizados fácilmente por una máquina y leídos fácilmente por humanos en diferentes culturas.
los java.time las clases usan formatos ISO 8601 de forma predeterminada al generar / analizar cadenas. Simplemente llame al toString
Y parse
métodos. No es necesario especificar un patrón de formato.
Instant.now().toString()
2018-11-05T18: 19: 33.017554Z
Para un valor en UTC, el Z
al final significa UTC, y se pronuncia “Zulu”.
Localizar
En lugar de especificar un patrón de formato, puede dejar java.time localizar automáticamente para usted. Utilizar el DateTimeFormatter.ofLocalized…
métodos.
Obtenga el momento actual con la hora del reloj de pared que usa la gente de una región en particular (una zona horaria).
ZoneId z = ZoneId.of( "Africa/Tunis" );
ZonedDateTime zdt = ZonedDateTime.now( z );
Genere texto en formato estándar ISO 8601 sabiamente extendido para agregar el nombre de la zona horaria entre corchetes.
zdt.toString (): 2018-11-05T19: 20: 23.765293 + 01: 00[Africa/Tunis]
Genere texto localizado automáticamente.
Locale locale = Locale.CANADA_FRENCH;
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.FULL ).withLocale( locale );
String output = zdt.format( f );
salida: lundi 5 de noviembre de 2018 à 19:20:23 heure normale d’Europe centrale
Por lo general, es mejor practicar la localización automática en lugar de preocuparse por los patrones de formato codificados.
Sobre java.time
los java.time framework está integrado en Java 8 y versiones posteriores. Estas clases suplantan las antiguas y problemáticas clases de fecha y hora heredadas, como java.util.Date
, Calendar
Y SimpleDateFormat
.
Para obtener más información, consulte el Tutorial de Oracle. Y busque Stack Overflow para obtener muchos ejemplos y explicaciones. La especificación es JSR 310.
los Joda-Time proyecto, ahora en modo de mantenimiento, aconseja la migración a las clases java.time.
Puedes intercambiar java.time objetos directamente con su base de datos. Utilice un controlador JDBC compatible con JDBC 4.2 o posterior. Sin necesidad de cuerdas, sin necesidad de java.sql.*
clases. Compatibilidad con Hibernate 5 y JPA 2.2 java.time.
¿Dónde obtener las clases java.time?
-
Java SE 8, Java SE 9, Java SE 10, Java SE 11y posterior: parte de la API estándar de Java con una implementación integrada.
- Java 9 trajo algunas características y correcciones menores.
-
Java SE 6 y Java SE 7
- La mayoría de java.time la funcionalidad está respaldada a Java 6 y 7 en ThreeTen-Backport.
-
Androide
- Versiones posteriores de implementaciones de paquetes de Android (26+) del java.time clases.
- Para Android anterior (<26), un proceso conocido como API desugaring trae un subconjunto del java.time funcionalidad no incorporada originalmente en Android.
- Si el desugaring no ofrece lo que necesita, el ThreeTenABP el proyecto se adapta ThreeTen-Backport (mencionado anteriormente) a Android. Ver Cómo usar ThreeTenABP….