4 cách để so sánh hai ngày trong Java

Mục lục:

4 cách để so sánh hai ngày trong Java
4 cách để so sánh hai ngày trong Java

Video: 4 cách để so sánh hai ngày trong Java

Video: 4 cách để so sánh hai ngày trong Java
Video: Lập trình Java-# 3 Tạo Chương Trình Đầu Tiên 2024, Có thể
Anonim

Có nhiều cách để so sánh hai ngày trong ngôn ngữ lập trình Java. Trong máy tính, ngày được biểu thị bằng một số (kiểu dữ liệu Dài) theo đơn vị thời gian - tức là số mili giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970. Trong Java, Ngày là một đối tượng, có nghĩa là nó có một số phương pháp so sánh. Bất kỳ phương pháp nào được sử dụng để so sánh hai ngày về cơ bản là so sánh các đơn vị thời gian của hai ngày đó.

Bươc chân

Phương pháp 1/4: Sử dụng CompareTo

4301351 1
4301351 1

Bước 1. Sử dụng CompareTo

Đối tượng Date thực hiện so sánh được để 2 ngày có thể được so sánh trực tiếp với nhau bằng phương thức CompareTo. Nếu cả hai ngày có cùng số trong đơn vị thời gian, thì phương thức trả về số không. Nếu ngày thứ hai ít hơn ngày đầu tiên, giá trị nhỏ hơn 0 sẽ được trả về. Nếu ngày thứ hai lớn hơn ngày đầu tiên, phương thức trả về giá trị lớn hơn 0. Nếu cả hai ngày đều giống nhau, thì phương thức sẽ trả về giá trị null.

4301351 2
4301351 2

Bước 2. Tạo nhiều đối tượng Ngày

Bạn phải tạo nhiều đối tượng Ngày trước khi so sánh chúng. Một trong những cách dễ nhất để làm điều này là sử dụng lớp SimpleDateFormat. Lớp này giúp bạn dễ dàng chuyển đổi giá trị ngày tháng đầu vào thành đối tượng Ngày tháng.

    SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-MM-dd"). Để khai báo một giá trị trong một '' Ngày Đối tượng '' mới, hãy sử dụng cùng một định dạng ngày khi tạo ngày. Ngày date1 = sdf.parse ("1995-02-23"); // date1 là ngày 23 tháng 2 năm 1995 Ngày date2 = sdf.parse ("2001-10-31"); // date2 là ngày 31 tháng 10 năm 2001 Ngày date3 = sdf.parse ("1995-02-23"); // date3 là ngày 23 tháng 2 năm 1995

4301351 3
4301351 3

Bước 3. So sánh các đối tượng Date

Đoạn mã sau sẽ hiển thị cho bạn các ví dụ cho từng trường hợp - nhỏ hơn, bằng và lớn hơn.

    date1.compareTo (date2); // date1 <date2, trả về giá trị nhỏ hơn 0 date2.compareTo (date1); // date2> date1, trả về giá trị lớn hơn 0 date1.compareTo (date3); // date1 = date3, vì vậy nó sẽ xuất ra 0 trên bảng điều khiển

Phương pháp 2/4: Sử dụng Bằng, Sau và Trước

4301351 4
4301351 4

Bước 1. Sử dụng bằng, sau và trước

Ngày có thể được so sánh bằng cách sử dụng các phương pháp bằng, sau và trước. Nếu hai ngày có cùng giá trị về thời gian, phương thức bằng trả về true. Ví dụ sau sẽ sử dụng đối tượng Date được tạo trong phương thức so sánh trong ví dụ.

4301351 5
4301351 5

Bước 2. So sánh với phương pháp trước

Đoạn mã sau đây hiển thị một trường hợp ví dụ trả về true và false. Nếu date1 là một ngày trước date2, phương thức before trả về true. Nếu không, phương thức before trả về false.

    System.out.print (date1.before (date2)); // hiển thị giá trị '' true '' System.out.print (date2.before (date2)); // trả về giá trị '' false ''

4301351 6
4301351 6

Bước 3. So sánh bằng cách sử dụng phương pháp sau

Đoạn mã sau đây cho thấy một trường hợp ví dụ trả về true và false. Nếu date2 là ngày sau date1, phương thức after trả về true. Nếu không, phương thức after sẽ trả về false.

    System.out.print (date2. after (date1)); // hiển thị giá trị '' true '' System.out.print (date1. after (date2)); // hiển thị giá trị '' false ''

4301351 7
4301351 7

Bước 4. So sánh với phương pháp bằng

Đoạn mã sau đây hiển thị một trường hợp ví dụ trả về true và false. Nếu cả hai ngày bằng nhau, phương thức bằng trả về true. Nếu không, phương thức bằng trả về false.

    System.out.print (date1.equals (date3)); // hiển thị giá trị '' true '' System.out.print (date1.equals (date2)); // hiển thị giá trị '' false ''

Phương pháp 3/4: Sử dụng Lịch lớp

4301351 8
4301351 8

Bước 1. Sử dụng Lịch lớp

Lớp Lịch cũng có các phương thức CompareTo, equals, after và before hoạt động giống như những phương thức được mô tả trước đó cho lớp Date. Vì vậy, nếu thông tin ngày được lưu trữ trong Lịch lớp, bạn không cần phải trích xuất ngày chỉ để so sánh.

4301351 9
4301351 9

Bước 2. Tạo một phiên bản của Lịch

Để sử dụng các phương pháp trong Lịch lớp, bạn phải tạo nhiều phiên bản Lịch. May mắn thay, bạn có thể sử dụng các giá trị từ một phiên bản Ngày đã tạo trước đó.

    Lịch cal1 = Calendar.getInstance (); // khai báo cal1 Lịch cal2 = Calendar.getInstance (); // khai báo cal2 Lịch cal3 = Calendar.getInstance (); // khai báo cal3 cal1.setTime (date1); // đưa ngày tháng vào cal1 cal2.setTime (date2); cal3.setTime (date3);

4301351 10
4301351 10

Bước 3. So sánh cal1 và cal2 bằng phương pháp trước

Đoạn mã sau sẽ xuất ra giá trị của tr

    System.out.print (cal1.before (cal2)); // sẽ trả về giá trị '' true ''

4301351 11
4301351 11

Bước 4. So sánh cal1 và cal2 bằng phương pháp sau

Đoạn mã sau sẽ trả về false vì cal1 là ngày trước cal2.

    System.out.print (cal1. after (cal2)); // trả về giá trị '' false ''

4301351 12
4301351 12

Bước 5. So sánh cal1 và cal2 bằng phương pháp bằng

Đoạn mã sau sẽ hiển thị một trường hợp ví dụ trả về true và false. Trạng thái phụ thuộc vào phiên bản Lịch được so sánh. Đoạn mã sau sẽ trả về giá trị "true", sau đó là "false" trên dòng tiếp theo.

    System.out.println (cal1.equals (cal3)); // trả về giá trị '' true '': cal1 == cal3 System.out.print (cal1.equals (cal2)); // trả về giá trị '' false '': cal1! = cal2

Phương pháp 4/4: Sử dụng getTime

4301351 13
4301351 13

Bước 1. Sử dụng getTime

Bạn cũng có thể so sánh trực tiếp các giá trị đơn vị thời gian của hai ngày, mặc dù hai phương pháp trước đó có thể dễ đọc hơn và thích hợp hơn. Bằng cách này, bạn sẽ so sánh 2 kiểu dữ liệu nguyên thủy, vì vậy bạn có thể sử dụng các toán hạng "" và "==".

4301351 14
4301351 14

Bước 2. Tạo một đối tượng thời gian ở định dạng số dài

Trước khi có thể so sánh các ngày, bạn phải tạo một giá trị Số nguyên Dài từ đối tượng Ngày đã tạo trước đó. May mắn thay, phương thức getTime () sẽ làm điều đó cho bạn.

    long time1 = getTime (date1); // khai báo time1 nguyên thủy của date1 long time2 = getTime (date2); // khai báo giá trị time2 nguyên thủy của date2

4301351 15
4301351 15

Bước 3. Thực hiện một phép so sánh nhỏ hơn

Sử dụng toán hạng nhỏ hơn (<) để so sánh hai giá trị số nguyên này. Vì time1 nhỏ hơn time2 nên thông báo đầu tiên sẽ xuất hiện. Câu lệnh else được đưa vào để hoàn thành cú pháp.

    if (time1 <time2) {System.out.println ("date1 là ngày trước date2"); // sẽ hiển thị vì time1 <time2} else {System.out.println ("date1 không phải là ngày trước date2"); }

4301351 16
4301351 16

Bước 4. Thực hiện một phép so sánh lớn hơn

Sử dụng toán hạng lớn hơn (>) để so sánh hai giá trị số nguyên này. Vì time1 lớn hơn time2 nên thông báo đầu tiên sẽ xuất hiện. Câu lệnh else được bao gồm để hoàn thành cú pháp.

    if (time2> time1) {System.out.println ("date2 là ngày sau date1"); // sẽ hiển thị vì time2> time1} else {System.out.println ("date2 không phải là ngày sau date1"); }

4301351 17
4301351 17

Bước 5. Thực hiện so sánh bằng

Sử dụng hàm toán hạng để kiểm tra sự bình đẳng của các giá trị (==) để so sánh hai số nguyên này. Vì time1 bằng time3 nên thông báo đầu tiên sẽ xuất hiện. Nếu luồng chương trình đi vào câu lệnh else, điều đó có nghĩa là hai thời điểm không có cùng giá trị.

    if (time1 == time2) {System.out.println ("cả hai ngày đều giống nhau"); } else {System.out.println ("Ngày 1 không giống với ngày 2"); // sẽ hiển thị vì time1! = time2}

Đề xuất: