When you do a hard reset like that, Bangle.js loses the time.
However, if you'd ever had a GPS lock in the past, as long as the battery didn't go flat the GPS receiver has the current time on it.
So when Bangle.js starts it sees the time isn't set, then it asks the GPS receiver if it has the time, and if it does, it uses it.
@Gordon started
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
When you do a hard reset like that, Bangle.js loses the time.
However, if you'd ever had a GPS lock in the past, as long as the battery didn't go flat the GPS receiver has the current time on it.
So when Bangle.js starts it sees the time isn't set, then it asks the GPS receiver if it has the time, and if it does, it uses it.