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: Hướng dẫn Inkscape - Bài 5: Làm quen với đối tượng dạng đường 2024, Có thể
Anonim

Có nhiều cách khác nhau để so sánh ngày tháng trong Java. Trong nội bộ, ngày được biểu thị dưới dạng thời điểm (dài) - 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ó bao gồm nhiều phương thức để so sánh. Bất kỳ phương pháp so sánh hai ngày về cơ bản sẽ so sánh thời gian của các ngày.

Các bước

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

4301351 1
4301351 1

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

Ngày thực hiện Có thể so sánh và vì vậy hai ngày có thể được so sánh trực tiếp với phương thức CompareTo. Nếu các ngày ở cùng một thời điểm, phương thức trả về giá trị không. Nếu ngày được so sánh nằm trước đối số ngày, giá trị nhỏ hơn 0 sẽ được trả về. Nếu ngày được so sánh nằm sau đối số ngày, giá trị lớn hơn 0 sẽ được trả về. Nếu các ngày bằng nhau, giá trị 0 được trả về.

4301351 2
4301351 2

Bước 2. Tạo các đối tượng ngày tháng

Bạn sẽ cần tạo từng đối tượng ngày tháng trước khi có thể bắt đầu so sánh chúng. Một cách để làm điều này là sử dụng lớp SimpleDateFormat. Nó cho phép dễ dàng nhập các giá trị ngày tháng vào các đối tượng ngày tháng.

    SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-MM-dd"); // Để khai báo giá trị trong các đối tượng ngày tháng mới. sử dụng cùng một định dạng ngày khi tạo ngày. Date 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 ngày tháng

Đoạn mã dưới đây sẽ hiển thị cho bạn từng trường hợp - nhỏ hơn, bằng và lớn hơn.

    date1.compareTo (date2); // date1 <date2, trả về nhỏ hơn 0 date2.compareTo (date1); // date2> date1, trả về lớn hơn 0 date1.compareTo (date3); // date1 = date3, vì vậy sẽ in 0 ra 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 với các phương pháp bằng, sau và trước. Nếu hai ngày ở cùng một thời điểm, phương thức bằng sẽ trả về true. Các ví dụ sẽ sử dụng các ngày đã tạo trước đó từ phương thức CompareTo.

4301351 5
4301351 5

Bước 2. So sánh bằng phương pháp trước

Đoạn mã dưới đây hiển thị một trường hợp đúng và sai. Nếu date1 trước date2, trước đó trả về true. Nếu không, trước khi trả về false.

    System.out.print (date1.before (date2)); // in true System.out.print (date2.before (date2)); // in sai

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ã dưới đây hiển thị một trường hợp đúng và sai. Nếu date2 sau date1, sau khi trả về true. Nếu không, sau khi trả về false.

    System.out.print (date2. After (date1)); // in true System.out.print (date1. After (date2)); // in false

4301351 7
4301351 7

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

Đoạn mã dưới đây cho thấy một trường hợp đúng và sai. Nếu các ngày bằng nhau, giá trị bằng trả về true. Nếu không, giá trị bằng trả về false.

    System.out.print (date1.equals (date3)); // in đúng System.out.print (date1.equals (date2)); // in sai

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

4301351 8
4301351 8

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

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

4301351 9
4301351 9

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

Để sử dụng các phương pháp Lịch, bạn sẽ cần một vài phiên bản Lịch. May mắn thay, bạn có thể nắm bắt thời gian từ các phiên bản Ngày đã được tạo.

    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); // áp dụng ngày tháng cho cal1 cal2.setTime (date2); cal3.setTime (date3);

4301351 10
4301351 10

Bước 3. So sánh cal1 và cal2 sử dụng trước đây

Đoạn mã dưới đây sẽ in true vì cal1 trước cal2.

    System.out.print (cal1.before (cal2)); // sẽ in true

4301351 11
4301351 11

Bước 4. So sánh cal1 và cal2 bằng cách sử dụng sau

Đoạn mã dưới đây sẽ in sai vì cal1 trước cal2.

    System.out.print (cal1. after (cal2)); // in sai

4301351 12
4301351 12

Bước 5. So sánh cal1 và cal2 bằng cách sử dụng các dấu bằng

Đoạn mã dưới đây sẽ hiển thị một ví dụ về cả trường hợp đúng và sai. Điều kiện phụ thuộc vào các trường hợp lịch được so sánh. Mã phải in "true", sau đó "false" trên dòng tiếp theo.

    System.out.println (cal1.equals (cal3)); // in ra true: cal1 == cal3 System.out.print (cal1.equals (cal2)); // in sai: cal1! = cal2

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

4301351 13
4301351 13

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

Cũng có thể so sánh trực tiếp thời điểm của hai ngày, mặc dù bất kỳ cách tiếp cận nào trước đây có thể dễ đọc hơn và thích hợp hơn. Đây sẽ là sự so sánh của hai kiểu dữ liệu nguyên thủy, vì vậy nó có thể được thực hiện với "" và "==".

4301351 14
4301351 14

Bước 2. Tạo các đối tượng thời gian dài

Trước khi bạn có thể so sánh các ngày, bạn phải tạo các số nguyên dài với dữ liệu từ các đối tượng Ngày đã tạo trước đó. May mắn thay, phương thức getTime () sẽ thực hiện hầu hết công việc cho bạn.

    long time1 = getTime (date1); // khai báo time1 nguyên thủy từ date1 long time2 = getTime (date2); // khai báo time2 nguyên thủy từ date2

4301351 15
4301351 15

Bước 3. Làm một phép so sánh nhỏ hơn

Sử dụng ký hiệu nhỏ hơn (<) để so sánh hai giá trị số nguyên này. Vì thời gian 1 ít hơn thời gian 2, nên thông báo đầu tiên sẽ được in. Câu lệnh else được bao gồm cho cú pháp thích hợp.

    if (time1 <time2) {System.out.println ("date1 trước date2"); // sẽ in kể từ time1 <time2} else {System.out.println ("date1 không 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 ký hiệu lớn hơn (>) để so sánh hai giá trị số nguyên này. Vì thời gian 1 lớn hơn thời gian 2, nên thông báo đầu tiên sẽ được in. Câu lệnh else được bao gồm cho cú pháp thích hợp.

    if (time2> time1) {System.out.println ("date2 sau date1"); // sẽ in kể từ time2> time1} else {System.out.println ("date2 không sau date1"); }

4301351 17
4301351 17

Bước 5. Thực hiện một phép so sánh bằng

Sử dụng biểu tượng để kiểm tra sự bằng nhau (==) để so sánh hai giá trị số nguyên này có bằng nhau không. Vì time1 bằng time3 nên thông báo đầu tiên sẽ được in ra. Nếu chương trình nhận được câu lệnh else, điều đó có nghĩa là thời gian không bằng nhau.

    if (time1 == time2) {System.out.println ("các ngày bằng nhau"); } else {System.out.println ("các ngày không bằng nhau"); // sẽ in kể từ time1! = time2}

Đề xuất: