I've got a web-based strategy game in which you build a city. Coding is smooth, but I'm kind of hung up on how long it takes my buildings to build. I want to keep the user playing, but have them long enough to keep them having to come back to the game. I've currently got it where each building has a base build rate that is exponentially increased by the building's level. I can adjust the times by changing the base build rate, but I was wondering if there is a better, or perhaps more widely-accepted way of doing this. I worry that a 113 day build on a level 10 building before reaching the next city level where the user has to start over will discourage further playing.
The question is "why do you have timers at all? What's the gameplay purpose?" When your answer is that you want to force the player to revisit the game later ("long enough to keep them having to come back to the game"), you need to consider how often you want them to revisit. Ideally you want to convince your player to make a habit out of playing your game and incorporate it into their daily life. To enforce this usage pattern, design your timers in a way that there is something to do in the intervals you want the player to interact with the game.
When you are targeting school kids, make the timers exactly 45 minutes long, so the players can visit the game in the breaks between lessons. (Your game does work well on lower-range smartphones, does it?)
When you are targeting adults and want the player to check in on the commute to work, in the lunch break, on the commute back from work and just before going to bed, then a 4-hour rhythm will work.
When you want the user to incorporate one daily game session into their real-life schedule, then slightly below 24 hour timers are the longest you should go with most of your timers.
Timers which are several days long can work to give the player some long-term anticipation, but only when you combine them with lots of shorter timers to ensure there is always something to do at every regular player visit. I would argue that one could even make one single 113 day timer work. It could serve as a tool to motivate players to become long-term community veterans. But only if you have enough shorter timers to keep them busy during this long period.
Also, make sure that your timers coincide. When there are multiple sources of timed events in your game, try to make sure that they all enforce the same rhythm. When you have like 8 pending timer events which are 30 minutes apart, the player won't know when to visit. It would be far better when they would all finish at roughly the same time, so the player can schedule a session shortly afterwards. That means that depending on the current progression of the player all timers should have roughly the same length or multiples thereof.