在 Java 中轉換字串到 DateTime 物件

Rupam Yadav 2023年1月30日 2020年12月19日
  1. 在 Java 中使用 SimpleDateFormatjava.util.Date 把一個日期字串轉換為 DateTime 物件
  2. 使用 Java 8 日期和時間庫將日期字串轉換為日期時間格式
  3. 使用 joda-time 將日期字串轉換為日期時間格式
  4. 在 Java 中使用 Timestamp 建構函式將字串日期 Date 轉換為時間戳 Timestamp
  5. 在 Java 中用 LocalDate 將日期字串轉換為時間戳
  6. 在 Java 中使用 atStartOfDay() 方法將字串日期轉換為時間戳
在 Java 中轉換字串到 DateTime 物件

本文將介紹我們如何使用不同的方法和例子將給定的字串轉換為一個 DateTime 物件。

在 Java 中使用 SimpleDateFormatjava.util.Date 把一個日期字串轉換為 DateTime 物件

SimpleDateFormat 是一個用於以本地化敏感方式解析和格式化日期的類。它允許我們將一個字串轉換為 DateTime,並將一個 DateTime 物件轉換為一個字串。

在下面的程式碼中,我們使用了一個字串 date_time,通過呼叫 SimpleDateFormat 例項 dateParser 上的 parse 方法來解析。我們希望字串 date_time 被解析的格式是在 SimpleDateFormat 建構函式中指定的。

我們還建立了一個新的 SimpleDateFormat 類的例項,並使用不同的格式。解析後的 date 將被格式化並列印出來。

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();
            }
        }
    }
}

輸出:

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

使用 Java 8 日期和時間庫將日期字串轉換為日期時間格式

LocaleDate 類表示不含時間的 ISO 格式的日期。DateTimeFormatter 類用於解析不同格式的日期。我們可以通過呼叫 DateTimeFormatter 上的 ofPattern() 方法提供自定義模式。

LocaleDate 有一個 parse() 方法,它將自定義的文字字串和特定的格式器 inputFormat 進行解析,得到一個 LocalDate 例項。獲得的 LocaleDate 例項 date 然後被格式化並列印為輸出。

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));
    }
}

輸出:

11/27/2020

使用 joda-time 將日期字串轉換為日期時間格式

joda-time 是一個標準的 DateTime 庫,它提供了豐富的方法來執行日期和時間計算。下面給出了包含該庫功能的 maven 依賴關係。

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

DateTimeFormatter 可以解析日期和時間的自定義表示。

我們用自定義模式建立一個 formatter 例項 datetimeformat。在 formatter 例項上呼叫 parseDateTime,使用自定義字串 dateTime 給出一個 DateTime 物件。

在這裡,我們建立了一個新的 DateTimeFormatter 例項 dateTimeFormatOut,使用不同的自定義模式。print() 方法在新的例項上被呼叫,它以新的格式列印 DateTime 物件 joda_time

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));
    }
}

輸出:

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

在 Java 中使用 Timestamp 建構函式將字串日期 Date 轉換為時間戳 Timestamp

在這裡,我們使用 Timestamp 建構函式來獲取一個時間戳 Timestamp 物件。首先,我們使用 SimpleDateFormat 類設定 date 的格式,然後使用 parser() 方法得到日期物件,然後使用 geteTime() 方法將時間與日期相加,得到一個 timestamp 的結果。請看下面的例子。

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

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);
            }
    }
}

輸出:

 1990-10-12 00:00:00.0

在 Java 中用 LocalDate 將日期字串轉換為時間戳

在 Java 8 中,它增加了一個新的 java.time 包,其中包含幾個處理日期和時間的類。在這裡,我們使用該包中的 LocalDate 類。我們使用 LocalDate 類的 parse() 方法從日期字串中得到 LocalDate 物件,然後使用 atTime() 方法得到 LocalDateTime 物件,返回一個帶時間的日期。now() 用於獲取系統的當前時間。

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);
              
    }
}

輸出:

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

在 Java 中使用 atStartOfDay() 方法將字串日期轉換為時間戳

LocalDate 類中的 atStartOfDay() 方法也用於獲取 LocalDateTime 物件。該方法在一天開始時將時間新增到日期中,並返回一個日期-時間而不是一個簡單的日期。請看下面的例子。

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);
    }
}

輸出:

2019-10-20T00:00
Author: 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

相關文章 - Java DateTime