First make sure you have the time zone set properly (or to automatic).
The time, if it's set to automatic, is the time on the tower it's connected to - which is usually no more than a few seconds off (it's technically possible for it to be a lot closer than that, but there's no law, so ...). Check with the carrier - the tower could be messed up, and trust me, they'd want to know. If not, a factory reset might help. (You'll lose ALL your data, so back EVERYTHING, including your apps, stuff you think you'll never want again, EVERYTHING, up.)
If that doesn't fix it, either use a watch to tell the time or the phone has to go in for repair. (There's a little circuit in the phone that's just about the same as the circuit in a watch. If it goes bad, the timekeeping is going to be off.)
Oh, the phone IS getting phone service, right? If it's not, since the internal clock usually gets reset pretty often by a pretty accurate source, it's not designed to be as accurate as a $2 watch, so it can be quite a bit off after a few hours.