studio obtener ingresar hora formato fecha actual java timezone gmt

java - ingresar - obtener hora android studio



Java-Almacena la hora GMT (5)

  1. Mi servidor tiene GMT + 7, así que si me muevo a otro servidor tiene otra zona horaria GMT, ¿la fecha almacenada en db será incorrecta?
  2. Sí Q1 es correcto, ¿qué tal si almaceno la fecha en la zona horaria GMT + 0 y la visualizo en la zona horaria GMT personalizada elegida por cada miembro?
  3. Cómo obtengo una cita con GMT + 0 en java

1) Para citar de los javadocs, las marcas de tiempo de milisegundos de Java son

la diferencia, medida en milisegundos, entre la hora actual y la medianoche del 1 de enero de 1970 UTC.

Por lo tanto, como la marca de tiempo es UTC / GMT, si la almacena en la base de datos, esta fecha será correcta independientemente del huso horario del servidor.

2) Formatear la marca de tiempo para mostrar dependiendo de la zona horaria sería el enfoque correcto.

3) Crear una nueva instancia de java.util.Date y llamar a getTime () le dará la marca de tiempo para GMT + 0 en Java.


De forma predeterminada, cuando obtiene una fecha en java en su zona horaria actual, puede usar la clase TimeZone para obtener la zona horaria en la que se está ejecutando su sistema. La mayoría de las bases de datos admiten que las fechas se pueden almacenar CON zona horaria, que probablemente sería la correcta para hacer esto, pero exactamente cuál es el formato puede depender de la base de datos que use.


Para agregar al punto de la marca, una vez que tenga un java.util.Date, puede "convertirlo" a cualquier zona horaria (según lo elegido por el usuario). Aquí hay un ejemplo de código en Groovy (funcionará en Java con ligeras modificaciones):

// This is a test to prove that in Java, you can create ONE java.util.Date // and easily re-display it in different TimeZones fmtStr = "MM/dd/yyyy hh:mm aa zzz" myDate = new java.util.Date() sdf = new java.text.SimpleDateFormat(fmtStr) // Default TimeZone println "Date formatted with default TimeZone: " + sdf.format(myDate) // GMT sdf.setTimeZone(TimeZone.getTimeZone("GMT")) println "Date formatted with GMT TimeZone: " + sdf.format(myDate) // America/New_York sdf.setTimeZone(TimeZone.getTimeZone("America/New_York")) println "Date formatted with America/New_York TimeZone: " + sdf.format(myDate) // PST sdf.setTimeZone(TimeZone.getTimeZone("PST")) println "Date formatted with PST TimeZone: " + sdf.format(myDate)


Le sugiero que use la fecha solo como "titular" y le proponga que use instancias de calendario en su lugar. Para obtener un calendario en la zona horaria GMT, solo usa esto:

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+00"))

Un calendario proporcionará una gran cantidad de beneficios cuando trabaje con horarios y fechas. Por ejemplo, agregar una hora a esto es simple:

cal.add(Calendar.HOUR, 1);

Por último, cuando necesitas una Fecha, simplemente utilizas esto:

Date date = cal.getTime();


Para Q3, considere usar la clase ZonedDateTime.