A "day" on Stack Exchange starts at 00:00 UTC time.
I believe "Achievements" are shown in absolute UTC days to keep them consistent to the way time spans for caps (to daily reputation, votes...), badges and possibly other things are calculated.
There have been requests for that definition to be changed, or for the displayed times to be made more consistent to the user's local time. For instance, on the main Meta:
They all have been declined, and others have been closed as duplicates of them. I could not find any official statement but, based on some of the answers to those questions, it seemingly happened out of concerns about implementation complexity, the chances to game the system that a localized definition of "day" would open up and the amount of work reasonably needed to mitigate them.
Note that relative times (e.g. "yesterday") that are not relevant to achievements, such as those shown at the bottom of posts in place of timestamps, are not relative to the UTC date: "yesterday" is defined as "more than 24 and less than 48 hours ago".