Hướng Dẫn Toàn Diện Về Ngày & Giờ Trong Java: Dành Cho Người Mới Bắt Đầu

Giới Thiệu

Xin chào các triệu phú Java tương lai! Hôm nay, chúng ta sẽ bắt đầu hành trình phiêu lưu qua thế giới của ngày và giờ trong Java. Đừng lo lắng nếu bạn chưa từng viết một dòng mã code - tôi sẽ là người hướng dẫn bạn, và bây giờ, bạn sẽ làm việc với ngày tháng như một chuyên gia!

Java - Date & Time

Hãy bắt đầu với một thông tin thú vị: Bạn có biết rằng máy tính không hiểu ngày tháng như chúng ta không? Đối với chúng, thời gian chỉ là một con số rất lớn đếm theo giây. Nhưng nhờ lớp Date trong Java, chúng ta có thể làm việc với ngày tháng theo cách mà có nghĩa với con người.

Lớp Date Trong Java

Khai Báo Lớp

Trong Java, lớp Date là một phần của gói java.util. Để sử dụng nó, chúng ta cần nhập vào đầu tệp Java của mình:

import java.util.Date;

Hãy nghĩ về dòng này như việc kể với Java, "Ôi, chúng ta sẽ làm việc với ngày tháng hôm nay, vậy hãy chuẩn bị công cụ đó cho chúng ta!"

Các Hàm Khởi Tạo Của Lớp

Lớp Date có một số hàm khởi tạo, nhưng trong lập trình Java hiện đại, chúng ta chủ yếu sử dụng hai:

  1. Date(): Tạo một đối tượng Date đại diện cho ngày và giờ hiện tại.
  2. Date(long milliseconds): Tạo một đối tượng Date cho một thời điểm cụ thể, được đo bằng millisecond từ ngày 1 tháng 1 năm 1970, 00:00:00 GMT (biết đến như là "thời điểm đầu").

Hãy xem chúng hoạt động như thế nào:

Date currentDate = new Date(); // Ngày và giờ hiện tại
Date specificDate = new Date(1000000000000L); // Ngày 9 tháng 9 năm 2001, 01:46:40 GMT

Trong dòng thứ hai, con số lớn đó đại diện cho số millisecond từ thời điểm đầu. Đừng lo lắng về việc ghi nhớ này - đây chỉ để cho bạn thấy cách Java suy nghĩ về ngày tháng ở phía sau màn hình.

Các Phương Thức Của Lớp

Lớp Date đi kèm với một số phương thức hữu ích. Hãy xem một số phương thức phổ biến nhất:

Phương Thức Mô Tả
getTime() Trả về số millisecond kể từ ngày 1 tháng 1 năm 1970
before(Date date) Kiểm tra xem ngày này có trước ngày được chỉ định hay không
after(Date date) Kiểm tra xem ngày này có sau ngày được chỉ định hay không
compareTo(Date date) So sánh hai ngày
toString() Chuyển đổi ngày thành một chuỗi đại diện

Dưới đây là cách chúng ta có thể sử dụng các phương thức này:

Date now = new Date();
Date later = new Date(now.getTime() + 86400000); // 24 giờ sau

System.out.println("Current time: " + now.toString());
System.out.println("Is now before later? " + now.before(later));
System.out.println("Comparison result: " + now.compareTo(later));

Trong ví dụ này, chúng ta tạo hai đối tượng Date: now (giờ hiện tại) và later (24 giờ sau). Sau đó, chúng ta in giờ hiện tại, kiểm tra xem now có trước later hay không và so sánh hai ngày.

Các Phương Thức Kế Thừa

Lớp Date cũng kế thừa các phương thức từ lớp cha của nó, Object. Một số trong số này bao gồm:

Phương Thức Mô Tả
clone() Tạo và trả về bản sao của đối tượng này
equals(Object obj) So sánh ngày này với đối tượng khác
hashCode() Trả về giá trị băm cho đối tượng này

Ví Dụ Tạo Một Đối Tượng Date Hiện Tại: Ví Dụ

Hãy kết hợp tất cả những gì đã học trong một ví dụ hoàn chỉnh:

import java.util.Date;

public class DateExample {
public static void main(String[] args) {
// Tạo một đối tượng Date cho ngày và giờ hiện tại
Date currentDate = new Date();

// In ngày hiện tại
System.out.println("Current date and time: " + currentDate.toString());

// Lấy thời gian trong millisecond và in nó
long timeInMillis = currentDate.getTime();
System.out.println("Time in milliseconds since epoch: " + timeInMillis);

// Tạo một ngày 24 giờ sau
Date tomorrowDate = new Date(timeInMillis + 86400000);

// So sánh các ngày
System.out.println("Is current date before tomorrow? " + currentDate.before(tomorrowDate));
System.out.println("Is current date after tomorrow? " + currentDate.after(tomorrowDate));

// So sánh các ngày bằng compareTo
int comparisonResult = currentDate.compareTo(tomorrowDate);
System.out.println("Comparison result: " + comparisonResult);
}
}

Kết Quả

Khi bạn chạy chương trình này, bạn sẽ thấy kết quả tương tự như này:

Current date and time: Wed Jun 21 15:30:45 EDT 2023
Time in milliseconds since epoch: 1687377045123
Is current date before tomorrow? true
Is current date after tomorrow? false
Comparison result: -1

Nhớ rằng, kết quả chính xác sẽ phụ thuộc vào thời điểm bạn chạy chương trình!

Kết Luận

Xin chúc mừng! Bạn đã bước tiến đầu tiên vào thế giới xử lý ngày tháng trong Java. Chúng ta đã bắt đầu với các khái niệm cơ bản về việc tạo đối tượng Date, so sánh chúng và trích xuất thông tin từ chúng.

Khi tiếp tục hành trình với Java, bạn sẽ khám phá các công cụ mạnh mẽ hơn để làm việc với ngày và giờ, như gói java.time được giới thiệu trong Java 8. Nhưng bây giờ, hãy thưởng thức bản thân mình - bạn đã ổn định rất tốt trong việc trở thành một "vua thời gian" Java!

Nhớ rằng, luyện tập sẽ làm bạn hoàn hảo. Hãy thử tạo các chương trình của riêng bạn sử dụng lớp Date. Có lẽ bạn có thể tạo một chương trình tính tuổi của bạn chính xác theo ngày, hoặc một chương trình để biết còn bao nhiêu ngày nữa là đến sinh nhật của bạn. Các khả năng là vô hạn!

Chúc bạn mãi mãi có các dòng code tốt và may mắn!

Credits: Image by storyset