¿Cómo representar la fecha en Java

nanakondor:

Me gustaría tener una clase Fecha simple que tiene atributos mes, año y día.

Quiero un objeto Date que se incluirán en un objeto de la revista para que pueda saber cuándo se publicó la Revista.

cuando intento utilizando el objeto Fecha de la clase Fecha como se muestra a continuación Fecha d1 = new Date (1,1,1); Fecha a partir de la nueva fecha se muestra tachado que está en desuso. He leído sobre el nuevo constructor de su sustitución, pero parece muy confuso. No entiendo cómo lograr esto usando clase Calendar. Si es posible, no quiero crear mi propia clase Date ... Por favor, ayúdame. Gracias

Albahaca Bourque:

tl; dr

Quiero un objeto Date que se incluirán en un objeto de la revista para que pueda saber cuándo se publicó la Revista.

Así que añadir una variable miembro de tipo java.time.LocalDate.

package work.basil.example;

import java.time.LocalDate;

public class Magazine
{
    // Member variables.
    public LocalDate published ;

    // Constructor.
    public Magazine ( LocalDate published )
    {
        this.published = published;
    }
}

Para usarlo:

Magazine m = new Magazine( LocalDate.of( 2019 , Month.JANUARY , 23 ) ) ;

LocalDate

  • Los modernos usos de aproximación LocalDate.
  • Nunca utilice java.util.Dateo java.sql.Date.

La LocalDateclase representa un valor de sólo fecha sin la hora del día y sin zona horaria o el offset de-UTC .

Una zona horaria es crucial en la determinación de una fecha. Por un momento dado, la fecha varía en todo el mundo por zona. Por ejemplo, unos minutos después de la medianoche en París Francia es un nuevo día, mientras que todavía “ayer” en Montréal Québec .

Si no se especifica la zona horaria, la JVM implícitamente aplica su zona horaria predeterminada actual. Ese defecto puede cambiar en cualquier momento durante el tiempo de ejecución (!), Por lo que sus resultados pueden variar. Mejor para especificar su zona horaria deseada / esperada explícitamente como un argumento. Si crítico, confirmar la zona con su usuario.

Especificar un nombre de zona horaria correcta en el formato de Continent/Region, por ejemplo America/Montreal, Africa/Casablancao Pacific/Auckland. Nunca use el 2-4 abreviatura de letras tales como ESTo IST, ya que son no verdaderas zonas de tiempo, no estandarizados, y ni siquiera único (!).

ZoneId z = ZoneId.of( "America/Montreal" ) ;  
LocalDate today = LocalDate.now( z ) ;

Si desea utilizar la zona horaria predeterminada actual de la JVM, pedir, y pasar como argumento. Si se omite, el código se vuelve ambigua para leer en que no se sabe con certeza si la intención de utilizar el valor predeterminado o si, al igual que muchos programadores, no tenían conocimiento de la cuestión.

ZoneId z = ZoneId.systemDefault() ;  // Get JVM’s current default time zone.

O especificar una fecha. Es posible ajustar el mes por un número, con numeración cuerdo 1-12 de enero a diciembre.

LocalDate ld = LocalDate.of( 1986 , 2 , 23 ) ;  // Years use sane direct numbering (1986 means year 1986). Months use sane numbering, 1-12 for January-December.

O, mejor, utilizar la Monthenumeración objetos predefinidos, uno para cada mes del año. Consejo: Utilice estos Monthobjetos a través de su base de código en lugar de un simple número entero para hacer que su código sea más auto-documentado, asegúrese de valores válidos, y proporcionar seguridad de tipos . Lo mismo ocurre con Yeary YearMonth.

LocalDate ld = LocalDate.of( 1986 , Month.FEBRUARY , 23 ) ;

Tabla de Java tipos de fecha y hora, a la vez moderno y su legado.


sobre java.time

El java.time marco está construido en Java 8 y versiones posteriores. Estas clases suplantar la vieja problemáticos heredados clases de fecha y hora como java.util.Date, Calendar, y SimpleDateFormat.

Para obtener más información, consulte el Tutorial de Oracle . Y la búsqueda de desbordamiento de pila durante muchos ejemplos y explicaciones. Especificación es JSR 310 .

The Joda-Time project, now in maintenance mode, advises migration to the java.time classes.

You may exchange java.time objects directly with your database. Use a JDBC driver compliant with JDBC 4.2 or later. No need for strings, no need for java.sql.* classes.

Where to obtain the java.time classes?

El ThreeTen-Extra proyecto se extiende java.time con clases adicionales. Este proyecto es un campo de pruebas para posibles futuras adiciones a java.time. Usted puede encontrar algunas clases útiles aquí, como Interval, YearWeek, YearQuarter, y más .

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=239695&siteId=1
Recomendado
Clasificación