Làm thế nào để kiểm tra tính hợp lệ của ngày tháng trong Java? (How to check vaild date in Java?)


Để kiểm tra tính hợp lệ của dữ liệu đầu vào là ngày tháng một cách chuẩn nhất bạn hãy sử dụng lớp SimpleDateFormat trong Java.





DateValidatorUseSimpleDateFormat.java
/**
 * @(#)DateValidatorUseSimpleDateFormat.java
 *
 * DateValidatorUseSimpleDateFormat application
 *
 * @author developer.bnson@gmail.com
 * @web vnlives.net
 * @version 1.00 2014/4/12
 */

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateValidatorUseSimpleDateFormat
{
   
    public static void main(String[] args)
    {
        String dateFormat = "dd-MM-yyyy";
           
       
        String date_01 = "20-11-2014";
        String date_02 = "30-04-2014";
        String date_03 = "";
        String date_04 = "31-31-2014";
        String date_05 = "31-02-2014";
       

        System.out.println("Date " + date_01 + ": " + isValidDate(date_01, dateFormat));
        System.out.println("Date " + date_02 + ": " + isValidDate(date_02, dateFormat));
        System.out.println("Date " + date_03 + ": " + isValidDate(date_03, dateFormat));
        System.out.println("Date " + date_04 + ": " + isValidDate(date_04, dateFormat));
        System.out.println("Date " + date_05 + ": " + isValidDate(date_05, dateFormat));


    }

    public static boolean isValidDate(String dateToValidate, String dateFormat)
    {
   
        // Where the date is blank,
        //it will be valid, so you need to handle it.
        // Trường hợp ngày tháng là trống thì nó sẽ là hợp lệ,
        // vì vậy cần phải xử lý nó.
        if(dateToValidate == null)
        {
            return false;
        }
       
        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
        // Thông thường dữ liệu đầu vào nếu không hợp lệ,
        // Java Date sẽ tự đông chuyển đổi lại cho hợp lệ,
        // Vì vây ta cần tắt chức năng này đi để dữ liệu được kiểm tra đúng đắn.
        // Specify whether or not date/time parsing is to be lenient. With lenient parsing,
        // the parser may use heuristics to interpret inputs
        // that do not precisely match this object's format. With strict parsing,
        // inputs must match this object's format.
        sdf.setLenient(false);
       
        try
        {
            //If not valid, it will to throw ParseException.
            //Trường hợp không hợp lệ, nó sẽ chuyển sang xử lý ngoại lệ.
            Date date = sdf.parse(dateToValidate);
            //System.out.println(date);
       
        }
        catch (ParseException e)
        {       
            //e.printStackTrace();
            return false;
        }
       
        return true;
    }
   
   
   
}


Kết quả - Result























No comments:

Post a Comment