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

  • Post category:javase

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

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

SimpleDateFormat 格式代碼

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

LetterDate or Time ComponentPresentationExamples
GEra designatorText
AD
yYearYear199696
YWeek yearYear200909
MMonth in year (context sensitive)MonthJulyJul07
LMonth in year (standalone form)MonthJulyJul07
wWeek in yearNumber27
WWeek in monthNumber2
DDay in yearNumber189
dDay in monthNumber10
FDay of week in monthNumber2
EDay name in weekTextTuesdayTue
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 TimePSTGMT-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

LocalDateLocalDateTime是不可變的日期時間對象,分別表示日期、日期和時間。默認情況下,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.