Chuyển đổi ngày tháng trong Java

Nhiều bạn lập trình viên khi mới bắt đầu xây dựng ứng dụng Java thường bị mắc kẹt trong việc chuyển đổi ngày tháng trong Java từ String sang Date và Date sang String.

Hy vọng trong phần hướng dẫn say đây sẽ giúp bạn thực hiện dễ dàng việc chuyển đổi ngày tháng trong Java từ String sang Date hoặc ngược lại từ Date sang String.

Chuyển đổi ngày tháng trong Java

Để định dạng ngày tháng trong Java chúng ta sẽ sử dụng đến lớp SimpleDateFormat, lớp SimpleDateFormat thuộc java.text.SimpleDateFormat cung cấp các phương thức để phân tích và chuyển đổi ngày tháng và thời gian trong ứng dụng Java. Lớp SimpleDateFormat kế thừa lớp DateFormat thuộc java.text.DateFormat.

Về cơ bản để chuyển đổi ngày tháng trong Java từ String sang Date và Date sang String sẽ thực hiện như sau:

// String -> Date
SimpleDateFormat.parse(String);

// Date -> String
SimpleDateFormat.format(date);

Trong đó:

  • Phương thức SimpleDateFormat.format(java.util.Date date) được sử dụng để chuyển đổi Date sang String.
  • Phương thức SimpleDateFormat.parse(String string) được sử dụng để chuyển đổi String sang Date.

Bảng sau liệt kê một số mẫu định dạng ngày và giờ được sử dụng trong lớp SimpleDateFormat:

Ký hiệu Mô tả Ví dụ
y Năm 2018
M Tháng trong năm July, 07, 7
d Ngày trong tháng 1-31
E Tên ngày trong tuần Friday, Sunday
a Định dạng AM hoặc PM AM, PM
H Giờ trong ngày 0-23
h Giờ AM hoặc PM 1-12
m Phút trong giờ 0-60
s Giây trong phút 0-60

Lưu ý là mẫu định dạng sẽ phân biệt chữ HOA và chữ thường nên các bạn phải nhập đúng mẫu định dạng nếu không sẽ sai kết quả.

Ví dụ chuyển đổi định dạng Date sang String trong Java:

package test;

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

/**
 *
 * @author TVD
 */
public class TestStringToDate {

    public static void main(String[] args) {
        Date date = new Date();
        DateFormat dateFormat = null;
        dateFormat = new SimpleDateFormat("dd/MM/yyyy");
        System.out.println("dd/MM/yyyy: " + dateFormat.format(date));
        dateFormat = new SimpleDateFormat("MM/dd/yyyy");
        System.out.println("MM/dd/yyyy: " + dateFormat.format(date));
        dateFormat = new SimpleDateFormat("hh:mm:ss MM/dd/yyyy");
        System.out.println("hh:mm:ss MM/dd/yyyy: " + dateFormat.format(date));
        dateFormat = new SimpleDateFormat("HH:mm:ss MM/dd/yyyy");
        System.out.println("HH:mm:ss MM/dd/yyyy: " + dateFormat.format(date));
        dateFormat = new SimpleDateFormat("HH:mm:ss.SSS MM/dd/yyyy");
        System.out.println("HH:mm:ss.SSS MM/dd/yyyy: " + dateFormat.format(date));
        dateFormat = new SimpleDateFormat("HH:mm:ss");
        System.out.println("HH:mm:ss: " + dateFormat.format(date));

    }

}

Kết quả sau khi chạy đoạn mã chương trình trên:

dd/MM/yyyy: 19/12/2018
MM/dd/yyyy: 12/19/2018
hh:mm:ss MM/dd/yyyy: 02:02:54 12/19/2018
HH:mm:ss MM/dd/yyyy: 14:02:54 12/19/2018
HH:mm:ss.SSS MM/dd/yyyy: 14:02:54.914 12/19/2018
HH:mm:ss: 14:02:54

Ví dụ chuyển đổi định dạng String sang Date trong Java:

package test;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

/**
 *
 * @author TVD
 */
public class TestDateToString {
    
    public static void main(String[] args) throws ParseException {
        DateFormat dateFormat = null;
        dateFormat = new SimpleDateFormat("dd/MM/yyyy");
        System.out.println("dd/MM/yyyy: " + dateFormat.parse("20/10/2018"));
        dateFormat = new SimpleDateFormat("MM/dd/yyyy");
        System.out.println("MM/dd/yyyy: " + dateFormat.parse("20/10/2018"));
        dateFormat = new SimpleDateFormat("hh:mm:ss MM/dd/yyyy");
        System.out.println("hh:mm:ss MM/dd/yyyy: " + dateFormat.parse("10:00:00 20/10/2018"));
        dateFormat = new SimpleDateFormat("HH:mm:ss");
        System.out.println("HH:mm:ss: " + dateFormat.parse("20:00:00"));
    }
    
}

Kết quả sau khi chạy đoạn mã chương trình trên:

dd/MM/yyyy: Sat Oct 20 00:00:00 ICT 2018
MM/dd/yyyy: Sat Aug 10 00:00:00 ICT 2019
hh:mm:ss MM/dd/yyyy: Sat Aug 10 10:00:00 ICT 2019
HH:mm:ss: Thu Jan 01 20:00:00 ICT 1970

Lời kết: Trong thời gian tới Team Việt Dev sẽ tiếp tục chia sẻ thêm nhiều bài viết về lập trình Java miễn phí đến bạn đọc, các bạn nhớ theo dõi kênh để có được những chia sẻ mới nhất.

(Tác giả: Team Việt Dev)

Bình luận