That is either the result of an odd implementation choice or an oversight. It is consistent in adding the days into the next month, even into the next year. It also subtracts days into the previous month, even negative numbers get processed. Some tests on https://mydemoversion8-sandbox.mxapps.io/p/ff/ParseDateTime show these results:
The last example even adds one hour for daylight saving time.
And it takes in big numbers too:
Your “creative” solution is actually very good. As far as I can see it covers all unexpected results.
I would consider this a bug. Did some testing. In 8.10 it would give a fault when parsing this string (I did not have 8.9 on my machine). But in later versions it indeed gave this result. I also tested it in Mx7.23.7 and it gave the same result. It seems you found a very peculiar bug here. FIle a bug report to Mendix because this is not correct in my opinion.
(The issue is still open at support, I just asked for an update on the topic.)