Summer time is back in effect from today, so I changed the time on the few devices that can’t adjust on their own via the Internet.
This includes the Nintendo DS, and seeing it sitting there on the shelf gathering dust reminded me of an episode that happened years ago: Pokémon Diamond could tell when you changed the time, even if the cartridge wasn’t inserted and there was no Internet connection! But how did he do that?
The solution they found is very simple: the internal clock remains at the same time, set in the factory, and when you set the time it is not actually changed, but simply the system takes note to add the difference. For example, “add 34599 seconds to the system time”.
So, games with time rewards like Pokémon or Animal Crossing just need to write somewhere in save file the difference between the “fake” and the “real” time: if it only changes by one second, it means that the user has changed it!
If you have a 3DS you can hack the system to always use the real date. After enabling homebrew (a bit complicated and laborious, if interested ask in the forum or in the comments, I leave here this guide), you can run ctr-no-timeoffset to set the difference between the two clocks to zero, and then set the internal time to the “correct” one via GodMode9.