Converti stringa in oggetto DateTime in Java

Rupam Yadav 12 ottobre 2023
  1. Usa SimpleDateFormat e java.util.Date per convertire una stringa di data in un oggetto DateTime in Java
  2. Utilizzare la libreria di data e ora di Java 8 per convertire una stringa di data nel formato di data e ora
  3. Usa joda-time per convertire una stringa di data in formato data e ora
  4. Converti la data della stringa in Timestamp con il costruttore Timestamp in Java
  5. Converti la stringa della data in Timestamp con LocalDate in Java
  6. Converti la data della stringa in Timestamp con il metodo atStartOfDay() in Java
Converti stringa in oggetto DateTime in Java

Questo articolo introdurrà come convertire una determinata stringa in un oggetto DateTime utilizzando diversi approcci ed esempi.

Usa SimpleDateFormat e java.util.Date per convertire una stringa di data in un oggetto DateTime in Java

SimpleDateFormat è una classe utilizzata per analizzare e formattare una data in modo sensibile alle impostazioni locali. Ci permette di convertire una stringa in DateTime e di convertire un oggetto DateTime in una stringa.

Nel codice sottostante, usiamo la stringa date_time, che viene analizzata chiamando il metodo parse sull’istanza SimpleDateFormat dateParser. Il formato in cui vogliamo che la stringa date_time venga analizzata è specificato all’interno del costruttore SimpleDateFormat.

Abbiamo anche creato una nuova istanza della classe SimpleDateFormat con un formato diverso. La data analizzata viene quindi formattata e stampata.

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class StringToDateTime {
  public static void main(String[] args) {
    String date_time = "11/27/2020 05:35:00";
    SimpleDateFormat dateParser = new SimpleDateFormat("MM/dd/yy HH:mm:ss");
    {
      try {
        Date date = dateParser.parse(date_time);
        System.out.println(date);

        SimpleDateFormat dateFormatter = new SimpleDateFormat("MM/dd/yy");
        System.out.println(dateFormatter.format(date));

      } catch (ParseException e) {
        e.printStackTrace();
      }
    }
  }
}

Produzione:

Fri Nov 27 05:35:00 UTC 2020
11/27/20

Utilizzare la libreria di data e ora di Java 8 per convertire una stringa di data nel formato di data e ora

La classe LocaleDate rappresenta una data in formato ISO senza ora. La classe DateTimeFormatter viene utilizzata per analizzare le date in diversi formati. Possiamo fornire modelli personalizzati chiamando il metodo ofPattern() su DateTimeFormatter.

LocaleDate ha un metodo parse(), che accetta la stringa di testo personalizzata e un formattatore specifico inputFormat per analizzare e ottenere un’istanza di LocalDate. La data di istanza di LocaleDate ottenuta viene quindi formattata e stampata come output.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class Main {
  public static void main(String[] args) {
    DateTimeFormatter inputFormat = DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm:ss");

    LocalDate date = LocalDate.parse("11/27/2020 05:35:00", inputFormat);

    DateTimeFormatter outputFormat = DateTimeFormatter.ofPattern("MM/dd/yyyy");
    System.out.println(date.format(outputFormat));
  }
}

Produzione:

11/27/2020

Usa joda-time per convertire una stringa di data in formato data e ora

joda-time è una libreria standard di DateTime che fornisce un ricco set di metodi per eseguire calcoli di data e ora. Di seguito viene fornita la dipendenza Maven per includere la funzionalità di questa libreria.

 <!-- https://mvnrepository.com/artifact/joda-time/joda-time -->
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.10.8</version>
    </dependency>

DateTimeFormatter può analizzare rappresentazioni personalizzate di data e ora.

Creiamo un’istanza del formattatore datetimeformat con un pattern personalizzato. La chiamata di parseDateTime sull’istanza del formattatore fornisce un oggetto DateTime utilizzando la stringa personalizzata dateTime.

Qui abbiamo creato una nuova istanza DateTimeFormatter dateTimeFormatOut con un pattern personalizzato diverso. Il metodo print() viene chiamato sulla nuova istanza che stampa l’oggetto DateTime joda_time in un nuovo formato.

import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

public class StringToDateTime {
  public static void main(String[] args) {
    String dateTime = "11/27/2020 05:35:00";
    DateTimeFormatter datetimeformat = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss");

    DateTime joda_time = datetimeformat.parseDateTime(dateTime);
    System.out.println("joda_time : " + joda_time);

    DateTimeFormatter dateTimeFormatOut = DateTimeFormat.forPattern("MM/dd/yyyy");
    System.out.println("date time format out:  " + dateTimeFormatOut.print(joda_time));
  }
}

Produzione:

joda_time : 2020-11-27T05:35:00.000+05:30
date time format out:  11/27/2020

Converti la data della stringa in Timestamp con il costruttore Timestamp in Java

Qui, usiamo il costruttore Timestamp per ottenere un oggetto Timestamp. Per prima cosa, usiamo la classe SimpleDateFormat per impostare il formato di data e poi otteniamo l’oggetto data usando il metodo parser(), poi usiamo il metodo geteTime() per aggiungere l’ora con la data e ottenere come risultato un timestamp. Vedi l’esempio sotto.

import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
      Date date = dateFormat.parse("12/10/1990");
      Timestamp timeStampDate = new Timestamp(date.getTime());
      System.out.println(timeStampDate);
    } catch (ParseException e) {
      System.out.println(e);
    }
  }
}

Produzione:

 1990-10-12 00:00:00.0

Converti la stringa della data in Timestamp con LocalDate in Java

In Java 8, aggiunge un nuovo pacchetto java.time che contiene diverse classi per gestire la data e l’ora. Qui, usiamo la classe LocalDate di quel pacchetto. Usiamo il metodo parse() della classe LocalDate per ottenere l’oggetto LocalDate dalla stringa della data e quindi usiamo il metodo atTime() per ottenere l’oggetto LocalDateTime che restituisce una data con l’ora. L’now() viene utilizzato per ottenere l’ora corrente del sistema.

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;

public class SimpleTesting {
  public static void main(String[] args) {
    LocalDate date = LocalDate.parse("2025-11-25");
    System.out.println(date);
    LocalDateTime dateTime = date.atTime(LocalTime.now());
    System.out.println(dateTime);
  }
}

Produzione:

2025-11-25
2025-11-25T09:44:56.814795

Converti la data della stringa in Timestamp con il metodo atStartOfDay() in Java

Il metodo atStartOfDay() nella classe LocalDate viene utilizzato anche per ottenere l’oggetto LocalDateTime. Questo metodo aggiunge l’ora alla data all’inizio della giornata e restituisce una data-ora piuttosto che una semplice data. Vedi l’esempio sotto.

import java.time.LocalDate;
import java.time.LocalDateTime;

public class SimpleTesting {
  public static void main(String[] args) {
    String strDate = "2019-10-20";
    LocalDate date = LocalDate.parse(strDate);
    LocalDateTime dateTime = date.atStartOfDay();
    System.out.println(dateTime);
  }
}

Produzione:

2019-10-20T00:00
Autore: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Articolo correlato - Java DateTime