Chuyển đổi định dạng ngày trong Java đơn giản, nhanh chóng

Chắc hẳn với nhiều bạn mới làm bắt đầu học Java và quen với ngôn ngữ mới này sẽ gặp phải vấn đề khó khăn trong việc chuyển đổi ngày tháng từ String sang Date và ngược lại. Bài viết dưới đây chia sẻ về định dạng ngày trong Java sẽ giúp bạn dễ dàng chuyển đổi ngày tháng trong Java. Cùng khám phá ngay thôi nào!

Mục lục bài viết

Tổng quan

Java là một ngôn ngữ lập trình hướng đối tượng và độc lập với nền tảng. Ngôn ngữ này ban đầu được phát triển bởi Sun Microsystems. Kể từ khi được phát hành vào năm 1995, Java đã trải qua nhiều lần sửa đổi. Nó rất dễ học và hiện là một trong những ngôn ngữ lập trình phổ biến nhất thế giới và được sử dụng trong nhiều ứng dụng phần mềm.

Các chương trình Java được biên dịch thành mã byte độc ​​lập với nền tảng. Mã này được thông dịch bởi JVM (Máy ảo Java) của nền tảng mà nó chạy trên đó. Ngôn ngữ mạnh mẽ và tích hợp các tính năng bảo mật hiện đại. 

Nó được sử dụng để phát triển các ứng dụng web cũng như các ứng dụng độc lập. Các chương trình Java có quản lý bộ nhớ tự động.

Trong hướng dẫn cấp độ cho người mới bắt đầu này, chúng tôi sẽ hướng dẫn bạn cách định dạng đối tượng Ngày trong ngôn ngữ lập trình Java. Chúng tôi giả định rằng bạn đã quen thuộc với những kiến ​​thức cơ bản về lập trình. Cùng tìm hiểu chi tiết về định dạng ngày trong Java.

Định dạng ngày trong Java DateFormat

Dinh-dang-ngay-trong-Java-1
Định dạng ngày trong Java DateFormat và Java SimpleDateFormat

Lớp ngày trong Java

Lớp Ngày trong Java được chứa trong gói Java.util. Ngày và giờ hiện tại được đóng gói trong lớp Date. Lớp này có hai hàm tạo và phương thức khởi tạo đầu tiên gán cho đối tượng ngày và giờ của hệ thống.

Cú pháp như sau:

Date()

Hàm tạo thứ hai chấp nhận dưới dạng một tham số là số mili giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970.

Cú pháp cho hàm tạo này như sau:

Date(long millisec)

Các lớp Java SimpleDateFormat và DateFormat được sử dụng để định dạng ngày tháng. Nó chủ yếu được sử dụng khi chúng ta cần hiển thị hoặc sử dụng chức năng ngày và giờ của Java. Cả hai lớp này đều có trong com.textgói.

  • DateFormat được sử dụng để định dạng ngày tháng thành Chuỗi dựa trên ngôn ngữ cụ thể được cung cấp làm đầu vào.
  • Ngôn ngữ được sử dụng để chỉ định khu vực và ngôn ngữ để làm cho mã có nhiều ngôn ngữ hơn cho người dùng.
  • Cách viết ngày tháng là khác nhau ở các khu vực khác nhau trên thế giới. Ví dụ: ngày 31 tháng 12 năm 2017 sẽ được viết ở Ấn Độ là ngày 31 tháng 12 năm 2017 nhưng điều tương tự sẽ được viết ở Hoa Kỳ là ngày 31 tháng 12 năm 2017.
  • Các lớp Định dạng ngày không được đồng bộ hóa, bạn nên tạo phiên bản riêng biệt cho từng luồng.
Dinh-dang-ngay-trong-Java-Java-DateFormat
Sử dụng chức năng ngày và giờ trong Java

Tạo phiên bản DateFormat

Đối tượng DateFormat có thể được tạo bằng cách sử dụng phương thức getDateInstance()getTimeInstance()của lớp DateFormat.

Locale loc = new Locale("en", "US");
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.DEFAULT, loc);

Như thể hiện trong ví dụ trên, getDateInstancephương thức DateFormat cần hai tham số đầu vào, tham số đầu tiên chỉ định DateFormat sẽ sử dụng và tham số thứ hai là ngôn ngữ.

Ví dụ 

Trong Java, SimpleDateFormat thường được sử dụng để định dạng ngày trong Java. Lớp này là lớp con của DateFormat. Phương thức định dạng của nó chuyển đổi một ngày thành một chuỗi. Mặt khác, phương thức phân tích cú pháp của nó chuyển đổi một chuỗi thành một ngày tháng.

Ví dụ: Chương trình lấy ngày và giờ hiện tại

import java.util.Date;
public class Example{
public static void main(String args[]) {
Date date1 = new Date();
System.out.println(date1.toString());
}
}

Câu lệnh nhập sẽ nhập các lớp từ gói ngày tháng. Sau khi hoàn tất, bạn có thể sử dụng các lớp của thư viện trong chương trình của mình. Tên của lớp được sử dụng trong chương trình này do người dùng định nghĩa và đặt tên là Ví dụ.

Từ khóa public là công cụ xác định quyền truy cập cho biết mọi người hoặc bất kỳ lớp bên ngoài nào có thể khởi tạo lớp này. Từ khóa static được sử dụng để chỉ ra chỉ có một thể hiện của lớp này.

Trong chương trình này, chúng tôi tạo một đối tượng ngày tháng. Đối tượng ngày chứa ngày và giờ hiện tại. ToString () chuyển đổi đối tượng ngày tháng thành một chuỗi. Điều này được in trên màn hình.

Mã định dạng DateFormat đơn giản

Mã định dạng DateFormat là danh sách các mã định dạng được sử dụng phổ biến nhất với ngày tháng trong Java. Bạn có thể sử dụng các mã định dạng này trong các chương trình Java của mình để chuyển đổi ngày tháng sang định dạng mong muốn.

Định dạng ngày trong Java – Java SimpleDateFormat

SimpleDateFormat rất giống DateFormat, điểm khác biệt lớn duy nhất giữa chúng là SimpleDateFormat có thể được sử dụng để định dạng (Chuyển đổi ngày thành chuỗi). Ngoài ra còn có thể phân tích cú pháp (Chuyển đổi chuỗi thành ngày) với hỗ trợ ngôn ngữ. Trong khi DateFormat không hỗ trợ ngôn ngữ.

Ngoài ra, DateFormat là một lớp trừu tượng cung cấp hỗ trợ cơ bản cho việc định dạng. Còn giúp phân tích cú pháp ngày tháng. SimpleDateFormat là lớp cụ thể mở rộng lớp DateFormat.

Tạo phiên bản SimpleDateFormat

SimpleDateFormat có thể được tạo bằng cách sử dụng phương thức khởi tạo SimpleDateFormat. Phương thức khởi tạo là một phương thức khởi tạo tham số và cần một mẫu Chuỗi làm tham số.

String pattern = "MM-dd-yyyy";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);

Trong ví dụ trên, mẫu Chuỗi là mẫu sẽ được sử dụng để định dạng ngày tháng và đầu ra sẽ được tạo theo mẫu đó là “MM-dd-yyyy”.

Dinh-dang-ngay-trong-Java-Java-SimpleDateFormat
Sử dụng phương thức khởi tạo SimpleDateFormat

Ví dụ 

Ví dụ 2: Chương trình định dạng ngày bằng SimpleDateFormat

SimpleDateFormat là một lớp chịu trách nhiệm định dạng và phân tích cú pháp ngày tháng. Hãy cùng xem qua chương trình dưới đây để hiểu rõ hơn điều này:

import java.util.*;
import java.text.*;
public class Example2 {
public static void main(String args[]) {
Date date1 = new Date( );
SimpleDateFormat x =  new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
System.out.println("Today's Date: " + x.format(date1));
}
}

Đầu ra của chương trình trên là:

Mon 2014.05.26 at 13:36:21 PM PDT

Dòng có SimpleDateFormat chỉ định cách chúng tôi muốn ngày được hiển thị.

‘E’, ‘yyyy.MM.dd’

Đây là các mã cho biết định dạng ngày trong Java cụ thể mà chúng tôi muốn. Kiểm tra bảng bên dưới để xem các mã định dạng khác nhau có sẵn.

Phân tích cú pháp bằng SimpleDateFormat

Phân tích cú pháp là chuyển đổi Chuỗi thành một java.util.Datecá thể. Chúng ta có thể phân tích cú pháp một chuỗi thành một phiên bản ngày tháng bằng cách sử dụng parse()phương thức của lớp SimpleDateFormat.

Để phân tích cú pháp một Chuỗi thành Ngày, chúng ta cần một thể hiện của lớp SimpleDateFormat và một mẫu chuỗi làm đầu vào cho hàm tạo của lớp.

String pattern = "MM-dd-yyyy";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
Date date = simpleDateFormat.parse("12-01-2018");
System.out.println(date);

Output:

Sat Dec 01 00:00:00 IST 2018

Bây giờ chúng ta hãy xem xét ví dụ SimpleDateFormat để phân tích thời gian.

String pattern = "HH:mm:ss";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
Date date = simpleDateFormat.parse("22:00:03");
System.out.println(date);

Output:

Thu Jan 01 22:00:03 IST 1970

Trong ví dụ trên, vì chúng tôi chưa chỉ định bất kỳ ngày nào nên chương trình coi kỷ nguyên là ngày tức là ngày 01 tháng 1 năm 1970.

Ngôn ngữ Java SimpleDateFormat

Chúng tôi đã làm việc với Ngôn ngữ như một phần của DateFormat và chúng tôi thấy rằng ngôn ngữ được sử dụng dựa trên các vùng. Hãy để chúng tôi xem xét chúng tôi muốn sử dụng SimpleDateFormat bằng tiếng Pháp, làm thế nào để thực hiện điều này?

String pattern = "EEEEE MMMMM yyyy HH:mm:ss.SSSZ";
SimpleDateFormat simpleDateFormat =new SimpleDateFormat(pattern, new Locale("fr", "FR"));
String date = simpleDateFormat.format(new Date());
System.out.println(date);

Output:

mardi janvier 2018 14:51:02.354+0530

Trong ví dụ trên, tháng và ngày được đặt tên bằng tiếng Pháp dựa trên ngôn ngữ được cung cấp làm đầu vào.

Chúng tôi đã thấy các cách định dạng và phân tích cú pháp khác nhau. Chúng ta hãy xem cú pháp mẫu sẽ được sử dụng cho mẫu định dạng.

Chữ cái cho Hoa văn Thành phần ngày hoặc giờ Các ví dụ
G Người chỉ định AD
Y Năm 2022 – yyyy, 12 – yy
M Tháng trong năm July – MMMM, Jul – MMM, 08 – MM
w Kết quả trong tuần trong năm 16
W Kết quả trong tuần trong tháng 3
D Cung cấp số ngày trong năm 266
d Ngày trong năm 02 – dd, 6 -d
F Ngày trong tuần trong tháng 4
E Tên ngày trong tuần Monday
u Số ngày trong tuần trong đó 1 đại diện cho Thứ Hai, 2 đại diện cho Thứ Ba, v.v. 2
a Điểm đánh dấu AM hoặc PM AM
H Giờ trong ngày 0 – 23 12
k Giờ trong ngày 1 -24 23
K Giờ sáng / chiều (Định dạng 12 giờ từ 0 – 11 giờ ) 0
h Giờ sáng / chiều (Định dạng 12 giờ từ 1 – 12 giờ ) 12
m Phút trong giờ 59
s Giây trong phút 34
S Mili giây trong phút 522
z Múi giờ Pacific Standard Time; PST; GMT-08:00
Z Chênh lệch múi giờ tính bằng giờ (Mẫu RFC) -0800
X Độ lệch múi giờ ở định dạng ISO -08; -0800; -08:00

 

Lưu ý: Trong các mẫu trên, một số chữ cái nên được sử dụng với số lượng khác nhau cho các kết quả khác nhau như cho tháng 7 (MMMM), tháng 7 (MMM), 07 (MM) cho kết quả khác nhau.

Định dạng và in ngày bằng hàm Print

Một trong những lỗi phổ biến nhất mà bạn có thể gặp phải khi làm việc với vòng lặp While là vòng lặp vô hạn đáng sợ. Bạn có nguy cơ bị mắc kẹt trong vòng lặp While vô hạn. Trường hợp này xảy ra nếu các câu lệnh bên trong thân vòng lặp không bao giờ hiển thị Boolean cuối cùng không đúng sự thật. Hãy quay lại ví dụ đầu tiên của chúng ta.

Trước đây, câu lệnh num = num + 1 của chúng tôi liên tục tăng giá trị của num. Cho đến khi nó không còn nhỏ hơn 10. Hiển thị biểu thức Boolean num <10 không đúng sự thật và kết thúc vòng lặp – thành công tốt đẹp!

Tuy nhiên, điều gì sẽ xảy ra nếu chúng ta vô tình viết num = num – 1 trong vòng lặp While?

lớp công khai WhileLoopExample
{
    public static void main (String args [])
	{
		int num = 0;
		System.out.println ("Hãy đếm đến 10!");
		trong khi (num <10)
		{
			num = num - 1;
			System.out.println ("Số:" + num);
		}
		System.out.println ("Chúng tôi đã đếm đến 10! Hurray!");
	}
}

Điều này sẽ tiếp tục trừ 1 từ num, xuống các số âm, giữ giá trị của nó nhỏ hơn 10, mãi mãi. Đây là một vòng lặp vô hạn vì Boolean của chúng ta sẽ luôn luôn đúng. Có nghĩa là chương trình của chúng ta sẽ tiếp tục chạy nó mà không có điểm kết thúc nào, trừ khi chúng ta sửa nó.

Tổng kết

Bài viết chia sẻ cho bạn toàn bộ kiến thức về định dạng ngày trong Java gồm có: SimpleDateFormat và DateFormat. Hai định dạng này sẽ giúp phân tích cú pháp và hỗ trợ ngôn ngữ hiệu quả cho các lập trình viên. Ngoài ra còn rất nhiều những kiến thức hữu ích về Lập trình đang chờ bạn khám phá trên Box.edu.vn. Tìm hiểu ngay!

5/5 - (5 bình chọn)
Xin chào các bạn! Mình là Hà Nguyên Phương Hiện đang là tác giả của Box.edu.vn website nổi tiếng chuyên review, đánh giá, giới thiệu các khóa học hay nhất hiện nay.