texto serie reconoce numeros numero mes hora formato fechas fecha convertir como cambia aparecen java datetime

java - serie - fechas en excel aparecen como numeros



cómo convertir la cadena en formato de hora y agregar dos horas (9)

Tengo el siguiente requisito en el proyecto.

Tengo un campo de entrada por nombre startDate y el usuario ingresa en el formato YYYY-MM-DD HH:MM:SS . Necesito agregar dos horas para la entrada del usuario en el campo fecha de startDate . Cómo puedo hacerlo.

Gracias por adelantado


tl; dr

LocalDateTime.parse( "2018-01-23 01:23:45".replace( " " , "T" ) ).plusHours( 2 )

java.time

El enfoque moderno utiliza las clases java.time agregadas a Java 8, Java 9 y posteriores.

el usuario ingresa en el formato YYYY-MM-DD HH: MM: SS

Analiza esa cadena de entrada en un objeto de fecha y hora. Su formato está cerca de cumplir con el formato estándar ISO 8601, utilizado de forma predeterminada en las clases java.time para analizar / generar cadenas. Para cumplir completamente, reemplace el ESPACIO en el medio con una T

String input = "2018-01-23 01:23:45".replace( " " , "T" ) ; // Yields: 2018-01-23T01:23:45

LocalDateTime como LocalDateTime dado que su entrada carece de cualquier indicador de zona horaria o offset-from-UTC.

LocalDateTime ldt = LocalDateTime.parse( input ) ;

agrega dos horas

Las clases de java.time pueden hacer las matemáticas por ti.

LocalDateTime twoHoursLater = ldt.plusHours( 2 ) ;

Zona horaria

Tenga en cuenta que LocalDateTime no representa un momento, un punto en la línea de tiempo. Sin el contexto de una zona horaria o offset-from-UTC, no tiene un significado real. La parte "local" del nombre significa cualquier localidad o ninguna localidad, en lugar de cualquier localidad en particular. Solo decir "mediodía el 21 de enero" podría significar mediodía en Auckland, Nueva Zelanda, lo cual ocurre varias horas antes que el mediodía en París, Francia.

Para definir un momento real, debe especificar una zona o desplazamiento.

ZoneId z = ZoneId.of( "Africa/Tunis" ) ; ZonedDateTime zdt = ldt.atZone( z ) ; // Define an actual moment, a point on the timeline by giving a context with time zone.

Si conoce la zona horaria deseada, aplíquelo antes de agregar las dos horas. La clase LocalDateTime supone días genéricos simples de 24 horas al hacer las matemáticas. Pero en varias zonas horarias en varias fechas, los días pueden tener una duración de 23 o 25 horas, o pueden tener otras longitudes. Por lo tanto, para obtener resultados correctos en un contexto zonificado, agregue las horas a su ZonedDateTime lugar de LocalDateTime .

Acerca de java.time

El marco java.time está integrado en Java 8 y posterior. Estas clases suplantan a las problemáticas antiguas clases legacy fecha y hora como java.util.Date , Calendar y SimpleDateFormat .

El proyecto Joda-Time , ahora en modo de mantenimiento , aconseja la migración a las clases java.time .

Para obtener más información, consulte el Tutorial de Oracle . Y busque para obtener muchos ejemplos y explicaciones. La especificación es JSR 310 .

¿Dónde obtener las clases de java.time?

  • Java SE 8 , Java SE 9 y posterior
    • Incorporado.
    • Parte de la API Java estándar con una implementación integrada.
    • Java 9 agrega algunas características y correcciones menores.
  • Java SE 6 y Java SE 7
    • Gran parte de la funcionalidad de java.time se transfiere a Java 6 y 7 en ThreeTen-Backport .
  • Android
    • Versiones posteriores de las implementaciones del paquete de Android de las clases java.time.
    • Para Android anterior, el proyecto ThreeTenABP adapta ThreeTen-Backport (mencionado anteriormente). Consulte Cómo utilizar ThreeTenABP ....

El proyecto ThreeTen-Extra amplía 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 .


Este ejemplo es una suma para la hora y la zona horaria (valores de cadena)

String DateVal = "2015-03-26 12:00:00"; String TimeVal = "02:00:00"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm:ss"); Date reslt = sdf.parse( DateVal ); Date timeZ = sdf2.parse( TimeVal ); //Increase Date Time reslt.setHours( reslt.getHours() + timeZ.getHours()); reslt.setMinutes( reslt.getMinutes() + timeZ.getMinutes()); reslt.setSeconds( reslt.getSeconds() + timeZ.getSeconds()); System.printLn.out( sdf.format(reslt) );//Result(+2 Hours): 2015-03-26 14:00:00

Gracias :)


Esto te dará el tiempo que quieras (por ejemplo: 21:31 PM)

//Add 2 Hours to just TIME SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss a"); Date date2 = formatter.parse("19:31:51 PM"); Calendar cal2 = Calendar.getInstance(); cal2.setTime(date2); cal2.add(Calendar.HOUR_OF_DAY, 2); SimpleDateFormat printTimeFormat = new SimpleDateFormat("HH:mm a"); System.out.println(printTimeFormat.format(cal2.getTime()));


Programa básico de agregar dos veces:
Puede modificar la hora: min: seg según su necesidad utilizando, en caso contrario.
Este programa le muestra cómo puede agregar valores de dos objetos y regresar a otro objeto.

class demo {private int hour,min,sec; void input(int hour,int min,int sec) {this.hour=hour; this.min=min; this.sec=sec; } demo add(demo d2)//demo because we are returning object { demo obj=new demo(); obj.hour=hour+d2.hour; obj.min=min+d2.min; obj.sec=sec+d2.sec; return obj;//Returning object and later on it gets allocated to demo d3 } void display() { System.out.println(hour+":"+min+":"+sec); } public static void main(String args[]) { demo d1=new demo(); demo d2=new demo(); d1.input(2, 5, 10); d2.input(3, 3, 3); demo d3=d1.add(d2);//Note another object is created d3.display(); } }

Programa de adición de tiempo modificado

class demo {private int hour,min,sec; void input(int hour,int min,int sec) {this.hour=(hour>12&&hour<24)?(hour-12):hour; this.min=(min>60)?0:min; this.sec=(sec>60)?0:sec; } demo add(demo d2) { demo obj=new demo(); obj.hour=hour+d2.hour; obj.min=min+d2.min; obj.sec=sec+d2.sec; if(obj.sec>60) {obj.sec-=60; obj.min++; } if(obj.min>60) { obj.min-=60; obj.hour++; } return obj; } void display() { System.out.println(hour+":"+min+":"+sec); } public static void main(String args[]) { demo d1=new demo(); demo d2=new demo(); d1.input(12, 55, 55); d2.input(12, 7, 6); demo d3=d1.add(d2); d3.display(); } }


Prueba este, lo pruebo, funciona bien

Date date = null; String str = "2012/07/25 12:00:00"; DateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); date = formatter.parse(str); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.HOUR, 2); System.out.println(calendar.getTime()); // Output : Wed Jul 25 14:00:00 IST 2012

Si desea convertir en su tipo de entrada que agregar este código también

formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); str=formatter.format(calendar.getTime()); System.out.println(str); // Output : 2012-07-25 14:00:00


Puede usar SimpleDateFormat para convertir la cadena en fecha. Y después de eso tienes dos opciones,

  • Haga un objeto de Calendario y luego use eso para agregar dos horas, o
  • obtenga el tiempo en milisegundos de ese objeto de fecha y agregue dos horas como, (2 * 60 * 60 * 1000)

    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // replace with your start date string Date d = df.parse("2008-04-16 00:05:05"); Calendar gc = new GregorianCalendar(); gc.setTime(d); gc.add(Calendar.HOUR, 2); Date d2 = gc.getTime();

    O,

    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // replace with your start date string Date d = df.parse("2008-04-16 00:05:05"); Long time = d.getTime(); time +=(2*60*60*1000); Date d2 = new Date(time);

Echa un vistazo a estos tutoriales.


Siendo un fan de la biblioteca de Joda Time , aquí le explicamos cómo puede hacerlo de esa manera utilizando un Joda DateTime :

import org.joda.time.format.*; import org.joda.time.*; ... String dateString = "2009-04-17 10:41:33"; // parse the string DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"); DateTime dateTime = formatter.parseDateTime(dateString); // add two hours dateTime = dateTime.plusHours(2); // easier than mucking about with Calendar and constants System.out.println(dateTime);

Si aún necesita usar los objetos java.util.Date antes / después de esta conversión, la API Joda DateTime proporciona algunos toDate() fáciles de fecha de toDate() y de toCalendar() para facilitar la traducción.

La API de Joda proporciona mucho más en cuanto a comodidad sobre la API de fecha / calendario de Java.


Utilice el SimpleDateFormat parse() clase SimpleDateFormat . Este método devolverá un objeto Date . A continuación, puede crear un objeto de Calendar para esta Date y agregarle 2 horas.

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = formatter.parse(theDateToParse); Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.HOUR_OF_DAY, 2); cal.getTime(); // This will give you the time you want.


//the parsed time zone offset: DateTimeFormatter dateFormat = DateTimeFormat.forPattern("yyyy-MM-dd''T''HH:mm:ss.SSSZ"); String fromDateTimeObj = "2011-01-03T12:00:00.000-0800"; DateTime fromDatetime = dateFormat.withOffsetParsed().parseDateTime(fromDateTimeObj);