public long processDate(String input) {

		int day = -1;
		int month = -1;
		int year = -1;
		int hour = -1;
		int minute = -1;
		String period = "AM";
		
		String[] inputArray = input.split(" ");
		Calendar tempCal = Calendar.getInstance();
		
		// At least need the day and month
		if (inputArray.length < 2) {
			return -1;
		}
		
		try {
			
			// Specify time only hh mm am/pm
			if ( inputArray.length == 3 && !isNumeric(inputArray[2]) ) {
				processTime(inputArray, tempCal);
				throw new Exception(LOG_NAME);
			}
			
			day = Integer.parseInt(inputArray[0]);
			month = Operations.returnMonth(inputArray[1]);

			tempCal.set(Calendar.DATE, day);
			tempCal.set(Calendar.MONTH, month - 1); // Start from index 0
			
			// Specify year too
			if ( inputArray.length >= 3 ) {
				year = Integer.parseInt(inputArray[2]);
				tempCal.set(Calendar.YEAR, year);
			}
			
			tempCal.set(Calendar.HOUR_OF_DAY, 23);
			tempCal.set(Calendar.MINUTE, 59);
			tempCal.set(Calendar.MILLISECOND, 999);
			
			// Specify time too
			if ( inputArray.length == 6 ) {
				String[] timeArray = { inputArray[3], inputArray[4], inputArray[5] };
				processTime(timeArray, tempCal);
			}
			
			

		} catch (Exception e) {
			
			if ( !e.getMessage().equals(LOG_NAME) ) {
				return -1;
			}
			
		}
		

		return tempCal.getTimeInMillis();
	}