fork download
  1. class Ideone
  2. {
  3. private static boolean isDigits(String t, int length) {
  4. int l = t.length();
  5. if (l != length) return false;
  6. for (int i = 0; i < l; i++) {
  7. char tmp = t.charAt(i);
  8. if (tmp < '0' || tmp > '9') return false;
  9. }
  10. return true;
  11. }
  12.  
  13. private static boolean validDate(String date) {
  14.  
  15. int[] days = {31,28,31,30,31,30,31,31,30,31,30,31};
  16.  
  17. String[] parts = date.split("-");
  18. if (parts.length != 3) return false;
  19.  
  20. if (!isDigits(parts[0], 2)) return false;
  21. int day = Integer.parseInt(parts[0]);
  22. if (day < 1 || day > 31) return false;
  23.  
  24. if (!isDigits(parts[1], 2)) return false;
  25. int month = Integer.parseInt(parts[1]);
  26. if (month < 1 || month > 12) return false;
  27.  
  28. if (day > days[month-1]) return false;
  29.  
  30. if (!isDigits(parts[2], 2)) return false;
  31. int year = Integer.parseInt(parts[2]);
  32.  
  33. return true;
  34. }
  35.  
  36. private static void test(String date) {
  37. String valid = validDate(date) ? "is" : "isn't";
  38. System.out.println(date + " " + valid + " a valid date.");
  39. }
  40.  
  41. public static void main (String[] args) throws java.lang.Exception
  42. {
  43. test("34-12-00");
  44. test("31-12-yy");
  45. test("31-02-14");
  46. test("22-10-14");
  47. }
  48. }
Success #stdin #stdout 0.07s 380224KB
stdin
Standard input is empty
stdout
34-12-00 isn't a valid date.
31-12-yy isn't a valid date.
31-02-14 isn't a valid date.
22-10-14 is a valid date.