¿Alguien puede informarme sobre los formatos de fecha disponibles en la clase SimpleDateFormat?
Pasé por API pero no pude encontrar una respuesta satisfactoria. Cualquier ayuda es muy apreciada.
¿Alguien puede informarme sobre los formatos de fecha disponibles en la clase SimpleDateFormat?
Pasé por API pero no pude encontrar una respuesta satisfactoria. Cualquier ayuda es muy apreciada.
Respuestas:
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
varios formatos que posiblemente pueda hacer. ex - dd/MM/yyyy
o YYYY-'W'ww-u
puede mezclar y combinar las letras para lograr el 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 / PMH
- 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
Utilizar:
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
SimpleDateFormat
permitir establecer la configuración regional en el constructor. SimpleDateFormat formatter = new SimpleDateFormat(pattern, locale);
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!
ACTUALIZAR
Las otras preguntas están pasadas de moda. Las terribles clases heredadas, como SimpleDateFormat
fueron suplantadas hace años por las clases modernas de java.time .
Para definir sus propios patrones de formato personalizados, los códigos en DateTimeFormatter
son similares pero no exactamente iguales a los códigos en SimpleDateFormat
. Asegúrese de estudiar la documentación. Y busque Stack Overflow para muchos ejemplos.
DateTimeFormatter f =
DateTimeFormatter.ofPattern(
"dd MMM uuuu" ,
Locale.ITALY
)
;
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, pueden ser analizados fácilmente por una máquina y leídos fácilmente por humanos en diferentes culturas.
Las clases java.time utilizan formatos ISO 8601 de forma predeterminada al generar / analizar cadenas. Simplemente llame a los métodos toString
& parse
. No es necesario especificar un patrón de formato.
Instant.now().toString()
2018-11-05T18: 19: 33.017554Z
Para un valor en UTC, al Z
final significa UTC y se pronuncia "Zulu".
En lugar de especificar un patrón de formato, puede dejar que java.time se localice automáticamente. Usa los 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 [África / Túnez]
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
En general, es una mejor práctica localizar automáticamente en lugar de preocuparse por los patrones de formato codificados.
El marco java.time está integrado en Java 8 y versiones posteriores. Estas clases suplantar la vieja problemáticos heredados clases de fecha y hora 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 .
El proyecto Joda-Time , ahora en modo de mantenimiento , aconseja la migración a las clases java.time .
Puede intercambiar objetos java.time directamente con su base de datos. Utilice un controlador JDBC compatible con JDBC 4.2 o posterior. No se necesitan cuerdas, no se necesitan java.sql.*
clases. Hibernate 5 y JPA 2.2 admiten java.time .
¿Dónde obtener las clases java.time?
verifique los formatos aquí http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
principal
System.out.println("date : " + new classname().getMyDate("2014-01-09 14:06", "dd-MMM-yyyy E hh:mm a z", "yyyy-MM-dd HH:mm"));
método
public String getMyDate(String myDate, String returnFormat, String myFormat)
{
DateFormat dateFormat = new SimpleDateFormat(returnFormat);
Date date=null;
String returnValue="";
try {
date = new SimpleDateFormat(myFormat, Locale.ENGLISH).parse(myDate);
returnValue = dateFormat.format(date);
} catch (ParseException e) {
returnValue= myDate;
System.out.println("failed");
e.printStackTrace();
}
return returnValue;
}