Để xác định dạng YYYY-MM-DD
, bạn chỉ có thể sử dụng LocalDate.parse
giới thiệu trong java.time
từ JDK 8.
có được một thể hiện của LOCALDATE từ một chuỗi văn bản như 2007/12/03.
Chuỗi phải đại diện cho một ngày hợp lệ và được phân tích cú pháp bằng cách sử dụng DateTimeFormatter.ISO_LOCAL_DATE.
A DateTimeParseException
sẽ bị hủy nếu ngày không hợp lệ.
Đối với hai định dạng khác bạn đã cung cấp cho chúng tôi, ngoại lệ sẽ được ném. Điều đó là hợp lý bởi vì chúng không phải là ngày thực, chỉ là một phần của một ngày tháng.
LOCALDATE cũng cung cấp một phương pháp of(int year, int month, int dayOfMonth)
do đó nếu bạn thực sự muốn để xác nhận đơn giản là năm trong một số trường hợp, năm với tháng trong trường hợp khác hoặc ngày đầy đủ thì bạn có thể làm điều gì đó như thế này:
public static final boolean validateInputDate(final String isoDate)
{
String[] dateProperties = isoDate.split("-");
if(dateProperties != null)
{
int year = Integer.parseInt(dateProperties[0]);
// A valid month by default in the case it is not provided.
int month = dateProperties.length > 1 ? Integer.parseInt(dateProperties[1]) : 1;
// A valid day by default in the case it is not provided.
int day = dateProperties.length > 2 ? Integer.parseInt(dateProperties[2]) : 1;
try
{
LocalDate.of(year, month, day);
return true;
}
catch(DateTimeException e)
{
return false;
}
}
return false;
}
Lưu ý rằng bạn mentionned một số định dạng nhưng không cung cấp cho họ, vì vậy tôi cho rằng đây là những chỉ 3.
Nguồn
2015-08-25 13:34:56
http://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html – arodriguezdonaire
gì bạn mong đợi như một ngày cho "YYYY"? "YYYY-01-01"? Câu hỏi tương tự cho "YYYY-MM". –
Nó chưa bao giờ là một cách hay để sử dụng lớp 'Lịch'. 'DateFormat' luôn là cái để sử dụng. – Kayaman