Witam.
Piszę sobie validator daty. Chcę, żeby w wypadku, gdy użytkownik poprawia datę, dzień był odpowiednio poprawiany.
Przykładowo mamy datę: 31.08.2009 user zmienia miesiąc na wrzesień, więc ponieważ nie ma 31 dnia września to automatycznie dzień powinien zostać poprawiony na 30.09.2009. Podobnie z innymi miesiącami w szczególności lutym i latami przestępnymi.
W czym problem?
QDateTime ma pareser: QDateTime::fromString ( const QString & string, const QString & format ) . Ale jeśli user wprowadzi zmieni miesiąc/rok dla którego nie ma tego dnia, parser zwraca datę, która zwraca pustą datę (isValid zwraca false), która nie zawiera żadnych informacji o dniu miesiącu czy nawet roku.
Jest metoda statyczna bool QDate::isValid ( int year, int month, int day ), ale ona wymaga ręcznego parsowania napisu.
Czy istnieje sposób bym mógł uniknąć ręcznego parsowania daty (prawdopodobnie duplikowałbym kod z Qt) i być wstanie pobrać nieprawidłową datę, by móc ją potem samemu poprawić?