You made the mistake of writing you automation without taking your domain into consideration. Let look at your selector
The first part is absolutely fine, you go straight and root yourself in the interesting sub component. On the second value, you define that september (data-month=9) will always be available, which it isn't since your application under test doesn't give data attributes to disabled fields but marks them just as
If you just exchange the "9" in your selector for a 10, it will work again.
Of course you might not want to have an automation that needs to be fixed every month, since the change of a month is a quite predictable event so if you want to select the 22nd of the current month you might wanna try something along the lines of
LocalDate currentdate = LocalDate.now();
String selector = "//table[@class='ui-datepicker-calendar']//td[@data-month='"+currentdate.getMonth()+"']//a[.='22']"
WebDriverWait wait2=new WebDriverWait(driver,5);
WebElement startdate = wait2.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(selector)));
which would insert the current month into your selector. If that isn't your intended behaviour, you might want to actually define a function to construct your selector according to your specification.