在 Java 中轉換字串到 DateTime 物件
-
在 Java 中使用
SimpleDateFormat
和java.util.Date
把一個日期字串轉換為 DateTime 物件 - 使用 Java 8 日期和時間庫將日期字串轉換為日期時間格式
-
使用
joda-time
將日期字串轉換為日期時間格式 -
在 Java 中使用
Timestamp
建構函式將字串日期Date
轉換為時間戳Timestamp
-
在 Java 中用
LocalDate
將日期字串轉換為時間戳 -
在 Java 中使用
atStartOfDay()
方法將字串日期轉換為時間戳
本文將介紹我們如何使用不同的方法和例子將給定的字串轉換為一個 DateTime
物件。
在 Java 中使用 SimpleDateFormat
和 java.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
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