Dates cause more silent cleaning errors than almost any other type, because wrong dates still look like dates.
A date stored as text cannot be sorted in time order, subtracted or grouped by month.
Parsing converts it into a true date value, which pandas stores as datetime64.
The safest text format is year, month, day, as in 2024-04-03, because it cannot be read 2 ways.
For any other format the parser should be told the order, such as day first, rather than left to guess.
A parser that guesses row by row can read 13/04 as day first and 03/04 as month first in the same column.
A timestamp without a time zone is called naive, and one with a time zone is called aware.
Naive timestamps from 2 sources cannot be compared safely, because nobody knows which clock each came from.
Converting everything to UTC removes that doubt and makes durations correct across sources.
Daylight saving time adds traps: one local hour is skipped each spring and one repeats each autumn.
A naive local timestamp in the repeated hour is ambiguous, because that time happened twice.
Dates without times, such as birthdays, usually should not be converted between time zones at all.
In practice, store UTC, keep the original time zone if local time matters, and convert only for display.
Grouping by day should use the business's local day, or late evening sales fall into the next day.
The usual mistake is checking only dates with a day over 12, which cannot be misread, and missing the ones that can.