如何使用java 字串轉換日期  Convert String to Date

  • Post category:javase

java 字串轉換日期,當你拿到了一組字串,內容是一個日期或是日期與時間的資訊,要轉換成Date,就要用到SimpleDateFormat的物件來幫忙轉換了。

可是,每個國家地區,習慣使用的日期時間格式都不同,會不會轉不過去啊? SimpleDateFormat可以指定特定格時進行轉換,非常彈性的。

SimpleDateFormat 格式代碼

SimpleDateFormat  節錄Api 文件中的代碼表,使用的時候要注意大小寫有別喔!

LetterDate or Time ComponentPresentationExamples
GEra designatorText
AD
yYearYear1996; 96
YWeek yearYear2009; 09
MMonth in year (context sensitive)MonthJuly; Jul; 07
LMonth in year (standalone form)MonthJuly; Jul; 07
wWeek in yearNumber27
WWeek in monthNumber2
DDay in yearNumber189
dDay in monthNumber10
FDay of week in monthNumber2
EDay name in weekTextTuesday; Tue
uDay number of week (1 = Monday, …, 7 = Sunday)Number1
aAm/pm markerTextPM
HHour in day (0-23)Number0
kHour in day (1-24)Number24
KHour in am/pm (0-11)Number0
hHour in am/pm (1-12)Number12
mMinute in hourNumber30
sSecond in minuteNumber55
SMillisecondNumber978
zTime zoneGeneral time zonePacific Standard Time; PST; GMT-08:00
SimpleDateFormat代碼表

使用java 字串轉換日期  Convert String to Date

程式碼:

import java.text.SimpleDateFormat;
import java.util.Date;
public class UseStringToDateEx1 {
        public static void main(String[] args) throws Exception{
                String str="13/06/2023";  //日期格式 日/月/年
                Date date=new SimpleDateFormat("dd/MM/yyyy").parse(str);  //指定格式要搭配日期中的格式喔
                System.out.println(str); 
                System.out.println(date); 
        }
}

輸出:

13/06/2023

Tue Jun 13 00:00:00 CST 2023

使用java 字串轉換日期時間

字串中當然也可以有時間的資訊,都可以進行轉換的。

程式碼:

import java.text.SimpleDateFormat;
import java.util.Date;
public class UseStringToDateEx2 {
        public static void main(String[] args)  throws Exception{
            String sDate1="2023-06-13"; 
            String sDate2 = "2023年06月13日"; 
            String sDate3 = "20230613"; 
            String sDate4 = "2023-06-13 14:45:30"; 
            String sDate5 = "2023年06月13日 14時45分30秒"; 
            String sDate6 = "20230613 14:45:30"; 
            SimpleDateFormat formatter1=new SimpleDateFormat("yyyy-MM-dd"); 
            SimpleDateFormat formatter2=new SimpleDateFormat("yyyy年MM月dd日"); 
            SimpleDateFormat formatter3=new SimpleDateFormat("yyyyMMdd"); 
            SimpleDateFormat formatter4=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
            SimpleDateFormat formatter5=new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒"); 
            SimpleDateFormat formatter6=new SimpleDateFormat("yyyyMMdd HH:mm:ss"); 
            Date date1=formatter1.parse(sDate1); 
            Date date2=formatter2.parse(sDate2); 
            Date date3=formatter3.parse(sDate3); 
            Date date4=formatter4.parse(sDate4); 
            Date date5=formatter5.parse(sDate5); 
            Date date6=formatter6.parse(sDate6); 
            System.out.println(sDate1+"\t"+date1); 
            System.out.println(sDate2+"\t"+date2); 
            System.out.println(sDate3+"\t"+date3); 
            System.out.println(sDate4+"\t"+date4); 
            System.out.println(sDate5+"\t"+date5); 
            System.out.println(sDate6+"\t"+date6); 
        }
}

輸出:

2023-06-13      Tue Jun 13 00:00:00 CST 2023

2023年06月13日       Tue Jun 13 00:00:00 CST 2023

20230613        Tue Jun 13 00:00:00 CST 2023

2023-06-13 14:45:30       Tue Jun 13 14:45:30 CST 2023

2023年06月13日 14時45分30秒        Tue Jun 13 14:45:30 CST 2023

20230613 14:45:30 Tue Jun 13 14:45:30 CST 2023

使用java 字串轉換日期時間 LocalDate or LocalDateTime

LocalDate和LocalDateTime是不可變的日期時間對象,分別表示日期、日期和時間。默認情況下,Java 日期採用 ISO-8601 格式,所以如果我們有任何表示這種格式的日期和時間的字符串,那麼我們可以直接使用這些類的parse() API。

日期字串轉 LocalDate

預設的日期格式為 yyyy-MM-dd

程式碼:

import java.time.LocalDate;
public class UseLocalDate2 {
        public static void main(String[] args) {
                LocalDate date = LocalDate.parse("2018-05-05");
                System.out.println(date);
        }
}

輸出:

2018-05-05

日期時間字串轉 LocalDateTime

預設的日期時間格式為 yyyy-MM-ddTHH:mm:ss

程式碼:

import java.time.LocalDateTime;
public class UseLocalDate2 {
        public static void main(String[] args) {
                LocalDateTime dateTime = LocalDateTime.parse("2018-05-05T11:50:55");
                System.out.println(dateTime);
        }
}

輸出:

2018-05-05T11:50:55

DateTimeFormatter指定格式進行轉換LocalDateTime

若要使用非預設的日期時間格式,可以使用java.time.format.DateTimeFormatter,來指定格式進行轉換。

程式碼:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class UseLocalDate3 {
        public static void main(String[] args) {
                String dateInString = "2023-06-13 14:45:30";
                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
                LocalDateTime dateTime = LocalDateTime.parse(dateInString , formatter);
                System.out.println(dateTime);
        }
}

輸出:

2023-06-13T14:45:30

java 日期物件 Date vs Calendar

This Post Has 3 Comments

  1. reese

    原來轉換的時候,可以直接標註中文的年月日啊!

  2. emma

    Java 8 之後新的LocalDateTime 可以直接轉字串,可是,如果要寫到資料庫,還是需要再轉為 Date吧!

  3. CBD

    感謝分享文章,很受用!

Comments are closed.