Lớp java.text.SimpleDateFormat được dùng để định dạng và phân tích chuỗi thành ngày và ngược lại.
- Constructor chấp nhận String định dạng ngày và tạo đối tượng SimpleDateFormat.
- Khởi tạo lớp bằng cách truyền định dạng mong muốn.
- Phân tích chuỗi ngày bằng phương thức
parse(). - Lớp util.Date cung cấp
before(),after(),equals()để so sánh.
Ví dụ: So sánh sau khi parse
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo {
public static void main(String args[]) throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-dd-MM");
String dateStr1 = "2007-11-25";
String dateStr2 = "1999-9-12";
// Parse chuỗi thành Date
Date date1 = formatter.parse(dateStr1);
Date date2 = formatter.parse(dateStr2);
Boolean bool1 = date1.after(date2);
Boolean bool2 = date1.before(date2);
Boolean bool3 = date1.equals(date2);
if (bool1) {
System.out.println(dateStr1 + " là sau " + dateStr2);
} else if (bool2) {
System.out.println(dateStr1 + " là trước " + dateStr2);
} else if (bool3) {
System.out.println(dateStr1 + " bằng " + dateStr2);
}
}
}
Kết quả
2007-11-25 là sau 1999-9-12
Sử dụng LocalDate.parse() (Java 8+)
Phương thức parse() của LocalDate chấp nhận String và trả về LocalDate.
import java.time.LocalDate;
public class Test {
public static void main(String args[]) {
String dateStr1 = "2007-11-25";
String dateStr2 = "1999-9-12";
LocalDate date1 = LocalDate.parse(dateStr1);
LocalDate date2 = LocalDate.parse(dateStr1); // Lưu ý: bug trong code gốc, nên là dateStr2
Boolean bool1 = date1.isAfter(date2);
Boolean bool2 = date1.isBefore(date2);
Boolean bool3 = date1.isEqual(date2);
if (bool1) {
System.out.println(dateStr1 + " là sau " + dateStr2);
} else if (bool2) {
System.out.println(dateStr1 + " là trước " + dateStr2);
} else if (bool3) {
System.out.println(dateStr1 + " bằng " + dateStr2);
}
}
}
Kết quả (đã sửa logic)
2007-11-25 là sau 1999-9-12