tl; dr
java.time.LocalDateTime.parse(
"27/12/2010 11:29" ,
DateTimeFormatter.ofPattern("dd/MM/uuuu HH:mm")
).plusMinutes(30)
2010-12-27T11: 59
Consejo: Si pretendía que fuera un momento, un punto específico en la línea de tiempo, aplique el contexto de un huso horario (ZoneId
) para obtener un ZonedDateTime
.
java.time
Su pregunta se utilizan las clases de fecha y hora viejas problemáticas de las primeras versiones de Java, y su pregunta utiliza el proyecto Joda-Time que ahora está en modo de mantenimiento. Ambos han sido suplantados por las clases java.time integradas en Java 8 y versiones posteriores.
Su entrada de cadena carece de un indicador de time zone o offset-from-UTC. Por lo tanto, analizar como java.time.LocalDateTime
.
DateTimeFormatter f = DateTimeFormatter.ofPattern("dd/MM/uuuu HH:mm") ;
LocalDateTime ldt = LocalDateTime.parse("27/12/2010 11:29" , f) ;
ldt.toString(): 2010-12-27T11: 29
importante hacer notar que no tienen un momento real, esto es, no un punto específico en el línea de tiempo Esta es solo una vaga idea acerca de potenciales momentos a lo largo de un rango de aproximadamente 26-27 horas. Para determinar un momento real, colóquelo en el contexto de una zona horaria (o desplazamiento): ZonedDateTime zdt = ldt.atZone(ZoneId.of("Pacific/Auckland")) ;
.
Agregue sus minutos.
LocalDateTime later = ldt.plusMinutes(30) ;
later.toString(): 2010-12-27T11: 59
Sobre java.time
El marco java.time está integrado en Java 8 y luego. Estas clases suplantan a las viejas y problemáticas clases de fecha y hora de legacy, como java.util.Date
, Calendar
, & SimpleDateFormat
.
El proyecto Joda-Time, ahora en maintenance mode, recomienda la migración a las clases java.time.
Para obtener más información, consulte el Oracle Tutorial. Y busque Stack Overflow para obtener muchos ejemplos y explicaciones. La especificación es JSR 310.
Puede intercambiar objetos de java.time directamente con su base de datos. Utilice un JDBC driver que cumpla con JDBC 4.2 o posterior. Sin necesidad de cadenas, sin necesidad de clases java.sql.*
.
¿Dónde obtener las clases java.time?
- Java SE 8, Java SE 9, y más tarde
- incorporado.
- Parte de la API estándar de Java con una implementación integrada.
- Java 9 agrega algunas características menores y correcciones.
- Java SE 6 y Java SE 7
- Gran parte de la funcionalidad de back-java.time está portado a Java 6 & 7 en ThreeTen-Backport.
- Android
- Las versiones posteriores de las implementaciones de haces de Android de las clases java.time.
- Para principios de Android (< 26), el proyecto se adapta ThreeTenABPThreeTen-Backport (mencionado anteriormente). Ver How to use ThreeTenABP….
El proyecto se extiende ThreeTen-Extra java.time con clases adicionales. Este proyecto es un terreno de prueba para posibles adiciones futuras a java.time. Puede encontrar algunas clases útiles aquí, como Interval
, YearWeek
, YearQuarter
y more.
FYI, el proyecto [* Joda-Time *] (http://www.joda.org/joda-time/) se encuentra ahora en [modo de mantenimiento] (https: //en.wikipedia.org/wiki/Maintenance_mode), con el equipo que recomienda la migración a [* java.time *] (http://docs.oracle.com/javase/9/docs/api/java/time/package-summary.html) clases Consulte [Tutorial de Oracle] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). Ahora use ['LocalDateTime :: plusMinutes'] (https://docs.oracle.com/javase/9/docs/api/java/time/LocalDateTime.html#plusMinutes-long-) como se muestra en [mi respuesta] (https://stackoverflow.com/a/49162285/642706) a continuación. –