Enjoy A New Student Discount All 55,000 Courses on sale for Only $12.99

Ends in 05h 23m 49s

Java 8 – El acceso al tiempo con LocalDate, LocalTime y LocalDateTime y (III)

LocalDateTime

El objeto LocalDateTime es capaz de guardar fecha y hora, pero sin especificación de zona ni offset. Como el resto de objetos de este package, es un objeto inmutable y thread-safe en que que podemos guardar los datos de fecha y hora y acceder a todas las herramientas del paquete

now(), of(),ofEpochSecond(), ofInstant(), parse(), from()

static LocalDateTime	now()
static LocalDateTime	now(Clock clock)
static LocalDateTime	now(ZoneId zone)
static LocalDateTime	of(int y, int m, int dayOfM, int h, int min)
static LocalDateTime	of(int y, int m, int dayOfM, int h, int min, int second)
static LocalDateTime	of(int y, int m, int dayOfM, int h, int min, int second, int nanoOfS)
static LocalDateTime	of(int y, Month m, int dayOfM, int h, int min)
static LocalDateTime	of(int y, Month m, int dayOfM, int h, int min, int second)
static LocalDateTime	of(int y, Month m, int dayOfM, int h, int min, int second, int nanoOfSecond)
static LocalDateTime	of(LocalDate date, LocalTime time)
static LocalDateTime	ofEpochSecond(long epochS, int nanoOfS, ZoneOffset offset)
static LocalDateTime	ofInstant(Instant instant, ZoneId zone)
static LocalDateTime	parse(CharSequence text)
static LocalDateTime	parse(CharSequence text, DateTimeFormatter formatter)
static LocalDateTime	from(TemporalAccessor temporal)

Crea un objeto LocalDateTime desde diversos orígenes

  • Desde el reloj del sistema
  • Desde un reloj definido
  • Desde el reloj del sistema en la zona indicada
  • Pasándole tres enteros correspondientes a año, mes, día, hora y minuto pudiendo indicar también segundo y nanosegundo
  • Pasándole los datos anteriores que nos interesen, pero con el mes como objeto de la enumeración Month
  • Entregando un LocalDate y un LocalTime
  • Indicando el numero de segundos y nano segundos transcurridos desde 1/1/1970, asi como el Offset
  • Pasándole un objeto Instant y la zona horaria
  • Indicando el texto en una string, añadiéndole patrón de formato si no es el estandar

En el ejemplo, mostramos todas las posibilidades indicadas

Si lo ejecutamos, obtenemos

with(), withDayOfMonth(), withDayOfYear(), withMonth(), withYear(), withHour(), withMinute(), withNano(), withSecond(),truncateTo()

LocalDateTime	with(TemporalAdjuster adjuster)
LocalDateTime	with(TemporalField field, long newValue)
LocalDateTime	withDayOfMonth(int dayOfMonth)
LocalDateTime	withDayOfYear(int dayOfYear)
LocalDateTime	withHour(int hour)
LocalDateTime	withMinute(int minute)
LocalDateTime	withMonth(int month)
LocalDateTime	withNano(int nanoOfSecond)
LocalDateTime	withSecond(int second)
LocalDateTime	withYear(int year)

Obtiene un nuevo objeto LocalDateTime, tras modificar el LocalDateTime que se pasa, en la unidad indicada por el método, y con el valor aportado por el parámetro.

LocalDateTime	truncatedTo(TemporalUnit unit)

Nos permite obtener un nuevo objeto LocalDateTime, a partir de uno ya existente, redondeando al nivel que nos interese, dejando las unidades inferiores a 0

En el ejemplo, podemos ver algunos usos

Que nos ofrecerá salidas como

plus(), plusDays(), plusHours(), plusMinutes(), plusSeconds(), plusNanos(), plusMonths(), plusWeeks(), plusYears()

LocalDateTime	plus(long amountToAdd, TemporalUnit unit)
LocalDateTime	plus(TemporalAmount amountToAdd)
LocalDateTime	plusDays(long days)
LocalDateTime	plusHours(long hours)
LocalDateTime	plusMinutes(long minutes)
LocalDateTime	plusMonths(long months)
LocalDateTime	plusNanos(long nanos)
LocalDateTime	plusSeconds(long seconds)
LocalDateTime	plusWeeks(long weeks)
LocalDateTime	plusYears(long years)

Crea un nuevo objeto LocalDateTime a partir del objeto pasado, tras sumar la cantidad, en las unidades indicadas por el método.

En el ejemplo vemos como podemos obtener una fecha sumando una cantidad de unidades a otra. Esa cantidad de unidades adquieren valor en función del método utilizado

Conseguiremos ver en salida

minus(), minusDays(), minusHours(), minusMinutes(), minusSeconds(), minusNanos(), minusMonths(), minusWeeks(), minusYears()

LocalDateTime	minus(long amountToSubtract, TemporalUnit unit)
LocalDateTime	minus(TemporalAmount amountToSubtract)
LocalDateTime	minusDays(long days)
LocalDateTime	minusHours(long hours)
LocalDateTime	minusMinutes(long minutes)
LocalDateTime	minusMonths(long months)
LocalDateTime	minusNanos(long nanos)
LocalDateTime	minusSeconds(long seconds)
LocalDateTime	minusWeeks(long weeks)
LocalDateTime	minusYears(long years)

Crea un nuevo objeto LocalDateTime a partir del objeto pasado, tras restar la cantidad, en las unidades indicadas por el método.

En el ejemplo vemos como podemos obtener una fecha restando una cantidad de unidades a otra. Esa cantidad de unidades adquieren valor en función del método utilizado

Que nos facilita los resultados previstos

isAfter(), isBefore(), isSupported(), equals(), compareTo()

boolean	isAfter(ChronoLocalDateTime<?> other)
boolean	isBefore(ChronoLocalDateTime<?>other)
boolean	equals(ChronoLocalDateTime<?> obj)
boolean	isSupported(TemporalField field)
boolean	isSupported(TemporalUnit unit)
int	compareTo(ChronoLocalDateTime<?>  other)

Dados dos objetos temporales, permite comparar si uno de ellos es anterior al otro o son iguales, así como comprobar si una determinada unidad temporal esta soportada por el objeto en cuestión

En el ejemplo, podemos ver el funcionamiento de estos métodos al comparar dos fechas

Que nos respondería con

O bien, al probar si una unidad es soportada por el campo

Que responderá con

get(), getDayOfMonth(), getDayOfWeek(), getDayOfYear(), getHour(), getLong(), getMinute(), getSecond(), getNano(), getMonth(), getMonthValue(), getYear()

int	get(TemporalField field)
int	getDayOfMonth()
DayOfWeek	getDayOfWeek()
int	getDayOfYear()
int	getHour()
long	getLong(TemporalField field)
int	getMinute()
int	getSecond()
int	getNano()
Month	getMonth()
int	getMonthValue()
int	getYear()

Nos proporciona información acerca del contenido del campo

En el ejemplo, vemos como se puede ir obteniendo la información de un campo LocalDateTime

El resultado que obtendríamos es

range()

ValueRange	range(TemporalField field)

Facilita el rango con que podemos filtrar cualquiera de los valores soportados, y por tanto una manera muy fácil de calcular dinámicamente filtros

En el ejemplo, vemos como calcular los filtros para distintas entradas, utilizando los ValueRange

Que nos da como resultado:

toLocalDate(), toLocalTime()

LocalDate	toLocalDate()
LocalTime	toLocalTime()

Conseguimos un objeto LocalDate o LocalTime con la parte correspondiente

En el ejemplo, vemos su uso

Que una vez impreso, aparecería como

toString()

String	toString()

Nos presenta la salida en formato string, tal y como la estamos viendo en estos ejercicios.

until()

long	until(Temporal endExclusive, TemporalUnit unit)

Calcula el tiempo que hay entre dos objetos LocalDateTime, en la unidad indicada

En el ejemplo, calculamos el tiempo transcurrido entre dos LocalDateTime, y lo pedimos en dias una vez, y en horas otra.

Que nos ofrece, como resultado:

format()

String	format(DateTimeFormatter formatter)

Formatea la fecha y hora según la forma deseada

En el ejemplo, se muestran algunos formatos. Es conveniente revisar DateTimeFormatter

Consiguiendo como resultado:

adjustInto()

Temporal	adjustInto(Temporal temporal)

Obtiene un objeto temporal tras aplicarle al LocalDateTime el ajuste indicado. El objeto obtenido esta limitado por el tipo de ajuste

En el ejemplo, vemos como podemos cambiar una hora, sin modificar nada mas

Y vemos como resultado

atOffset(), atZone()

OffsetDateTime	atOffset(ZoneOffset offset)
ZonedDateTime	atZone(ZoneId zone)

Combina el objeto LocalDateTime, con una zona o un offset, para disponer de un objeto temporal completo, que pueda representar fecha y hora con indicación de zona u offset. La hora no se modifica, solo se añade la identificacion

Podemos ver un ejemplo en donde añadimos a nuestra hora local una zona, y otro, en donde añadimos el offset

Que nos presenta

Conclusión

La clase LocalDateTime mantiene una fecha y hora(días, mes, año, hora, minuto, segundo) y puede ser reutilizados en el resto de clases de la api java.time

Este articulo detalle una de las clases de la api java.time descritas anteriormente en el indice que se facilito sobre este tema


Descubre más desde Recursos para formacion

Suscríbete y recibe las últimas entradas en tu correo electrónico.

Deja un comentario

/*Si te ha gustado el artículo
no dudes en compartirlo*/

Facebook
Twitter
LinkedIn

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies

Ver mi IP

Ver ip de mi máquina
tipo valor
Ip: 18.97.14.80
Proxy: 18.97.14.80
Remote host: 18-97-14-80.crawl.commoncrawl.org
Remote port: 50468
** 18.97.14.80, 172.68.245.26