static boolean mayBeDate ( String s ) { if ( s == null || s . length ( ) != "yyyy-MM-dd_HH-mm-ss" . length ( ) ) { return false ; } for ( int i = 0 ; i < s . length ( ) ; i ++ ) { switch ( s . charAt ( i ) ) { case ' ' : switch ( i ) { case 4 : case 7 : case 13 : case 16 : break ; default : return false ; } break ; case ' ' : if ( i != 10 ) { return false ; } break ; case ' ' : case ' ' : switch ( i ) { case 4 : // - case 7 : // - case 10 : // _ case 13 : // - case 16 : // - return false ; default : break ; } break ; case ' ' : switch ( i ) { case 4 : // - case 5 : // months 0-1 case 7 : // - case 10 : // _ case 13 : // - case 16 : // - return false ; default : break ; } break ; case ' ' : switch ( i ) { case 0 : // year will safely begin with digit 2 for next 800-odd years case 4 : // - case 5 : // months 0-1 case 7 : // - case 10 : // _ case 11 : // hours 0-2 case 13 : // - case 16 : // - return false ; default : break ; } break ; case ' ' : case ' ' : switch ( i ) { case 0 : // year will safely begin with digit 2 for next 800-odd years case 4 : // - case 5 : // months 0-1 case 7 : // - case 8 : // days 0-3 case 10 : // _ case 11 : // hours 0-2 case 13 : // - case 16 : // - return false ; default : break ; } break ; case ' ' : case ' ' : case ' ' : case ' ' : switch ( i ) { case 0 : // year will safely begin with digit 2 for next 800-odd years case 4 : // - case 5 : // months 0-1 case 7 : // - case 8 : // days 0-3 case 10 : // _ case 11 : // hours 0-2 case 13 : // - case 14 : // minutes 0-5 case 16 : // - case 17 : // seconds 0-5 return false ; default : break ; } break ; default : return false ; } } return true ; }
A pre - check to see if a string is a build timestamp formatted date .