On the second, there’s understandable confusion on that. datetimeFormat (in both Lucee and ACF) has different mask arguments than dateFormat and timeFormat, since it has to accommodate both kinds. As such:
m is for month, thus “always 7”, at least this month.
Adding to what @carehart already said, I’d also always parse any string representing a date/time to a datetime object first before doing anything with it. CFML really does lots of magic by parsing somehow any date string automatically, but it may have unexpected results then.
I’m going to test and compare before I comment… I used parseDateTime() as I thought it would be more accurate and discovered that more precision resulted in worse results. (ACF doesn’t seem to be affected.)