Tôi muốn xác thực và phân tích ngày bằng cách sử dụng simpleDateFormat với định dạng "yyyymmdd" Điều này cũng cho phép 100624, được phân tích cú pháp đến năm thứ 10 (54 năm sau khi Julius Ceasar qua đời). Những ngày tháng cũng sẽ giống như năm 1970, vì vậy tôi không muốn giải quyết với SimpleDateFornat ("yymmdd").buộc 4 chữ số năm trong java's simpleedateformat
Tôi tự hỏi có cách nào để ép buộc định dạng bốn chữ số bằng cách sử dụng SimpleDateFormat không? Tôi gần để làm một kiểm tra regexp trả trước nhưng có lẽ có một cách thông minh để sử dụng (Simple) DateFormat()?
Khi được yêu cầu mã, mọi thứ trở nên phức tạp hơn và nghiên cứu của tôi là một nửa. Định dạng được sử dụng là yyyy-MM-dd để bắt đầu (nó đến từ một biến, có javadoc sai). Tuy nhiên như được chỉ ra trong một câu trả lời dưới đây yyyyMMdd không ép buộc một chữ số bốn năm. Vì vậy, câu hỏi của tôi được thay đổi để Làm thế nào để buộc một năm bốn chữ số cho định dạng "yyyy-MM-dd". Và tại sao "yyyyMMdd" lại hành xử khác?
public void testMaturity() {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.setLenient(false);
System.out.println(" " + sdf.format(sdf.parse("40-12-14")));
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyyMMdd");
sdf.setLenient(false);
System.out.println(" " + sdf2.format(sdf2.parse("401214")));
fail();
} catch (ParseException pe) {
assertTrue(true);
}
nào in 0040-12-14
Nếu ngày đòi hỏi yyyymmdd sau đó năm 10 sẽ là 0010.Tôi không thấy bất kỳ vấn đề với điều này, bạn không cho phép họ nhập 1 cho ngày đầu tiên (01) hoặc cho tháng đầu tiên, vậy tại sao cho phép nó trong nhiều năm. – Goibniu