java - entre - timestamp to date
¿Cómo obtener la marca de tiempo actual en formato de cadena en Java? "Aaaa.MM.dd.HH.mm.ss" (5)
Use java.sql solo para la transferencia de la base de datos
Los tipos java.sql, como java.sql.Timestamp
, solo se deben usar para la transferencia dentro y fuera de la base de datos. Convierta inmediatamente a tipos java.time en Java 8 y posterior.
java.time.Instant
Un java.sql.Timestamp
asigna a un java.time.Instant
, un momento en la línea de tiempo en UTC.
java.sql.Timestamp ts = myResultSet.getTimestamp( … );
Instant instant = ts.toInstant();
Zona horaria
Aplique la zona horaria deseada / esperada para obtener un ZonedDateTime
.
ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );
Cuerdas formateadas
Use un DateTimeFormatter
para generar su cadena. Los códigos de patrón son similares a los de java.text.SimpleDateFormat
pero no exactamente, así que lea el documento con cuidado.
DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "uuuu.MM.dd.HH.mm.ss" );
String output = zdt.format( formatter );
Este formato particular es ambiguo en cuanto a su significado exacto ya que carece de cualquier indicación de offset-from-UTC o zona horaria.
ISO 8601
Si tiene algo que decir al respecto, le sugiero que considere usar los formatos estándar ISO 8601 en lugar de hacer los suyos propios. El formato estándar es bastante similar al tuyo. Por ejemplo:
2016-02-20T03:26:32+05:30
.
Las clases java.time usan estos formatos estándar de forma predeterminada, por lo que no es necesario especificar un patrón. La clase ZonedDateTime
amplía el formato estándar al agregar el nombre de la zona horaria (una mejora inteligente).
String output = zdt.toString(); // Example: 2007-12-03T10:15:30+01:00[Europe/Paris]
Convierte a java.sql
Puede convertir de java.time a java.sql.Timestamp
. Extraiga un Instant
de ZonedDateTime
.
Se han agregado nuevos métodos a las clases antiguas para facilitar la conversión a / desde clases java.time.
java.sql.Timestamp ts = java.sql.Timestamp.from( zdt.toInstant() );
¿Cómo obtener la marca de tiempo en formato de cadena en Java? "aaaa.MM.dd.HH.mm.ss"
String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Timestamp());
Esto es lo que tengo, pero Timestamp () requiere un parámetro ...
Puede utilizar java.util.Date en lugar de Timestamp:
String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date());
Reemplazar
new Timestamp();
con
new java.util.Date()
porque no hay un constructor predeterminado para Timestamp
, o puedes hacerlo con el método:
new Timestamp(System.currentTimeMillis());
Un enfoque más apropiado es especificar una región Locale como un parámetro en el constructor. El siguiente ejemplo usa una región de configuración regional de EE. UU. El formato de fecha es sensible a la configuración regional y utiliza la configuración regional para adaptar la información relativa a las costumbres y convenciones de la región del usuario Configuración regional (plataforma Java SE 7)
String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss", Locale.US).format(new Date());
Use la clase java.util.Date
lugar de Timestamp.
String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date());
Esto te dará la fecha actual en el formato especificado.