A couple of thoughts:
1) I'm not sure what "Value" is in your first part and why it's being added to all the different elements simultaneously. Perhaps it's meant to be different values for different units (e.g. second_value, minute_value, etc)?
2) I think you need to decide whether you're doing elapsed time or absolute date time. By that I mean, when you start the game, are all the counts zero, or are they set to the current date somehow? The implementations will differ depending. The reason for this is that you're getting into months and years, and the complexity of "how many days are in a month" raises its ugly head (as your note indicates) as the number of days in the month depends on what month it is. And that can only be calculated from an absolute sort of date time. You could arbitrarily assign the beginning of your game to a date to give it a frame of reference (in which case, it's not elapsed time - hence my question). I can appreciate your ambition, but you might want to do an initial implementation to the day level and then see if you even need to go to months. Again, it depends on whether you're counting (relative) elapsed time from start of game or trying to simulate an actual (absolute) date.
The other confusion is which of the variables are your actual tracking ones. At the core, you will have variables that represent your time. It seems in this case that it's the "_count" ones, and all the rest are computed from those. If that's the case, then you don't need to keep all the intermediate ones. Perhaps the "_count" variables to hold the time you update and the "clock_" ones to represent what someone would see. The others in between don't need to be kept.
Finally, your algorithm also implies that the base level time variables are not kept normalized. In other words, if you keep adding seconds over and over, then the seconds_count variable will keep going up, but the others never will. They will remain 0 forever. And you're relying on code further downstream to normalize things. You might save yourself some grief (and variables) if you just normalize the base ones rather then generate the almost-normalized intermediate "integer" ones. In other words:
1) Update your counts with the value deltas.
2) Perform the calculations back on the "_count" variables, not onto new "_integer" ones. That is:
minutes_count = minutes_count + seconds_count/60 // add seconds to minutes
seconds_count = seconds_count % 60 // normalize seconds
hours_count = hours_count + minutes_count/60 // add minutes to hours
minutes_count = minutes_count % 60 // normalize minutes
etc.
3) Use those directly to calculate the clock.
Most time keeping systems don't even bother with different variables. They just track seconds (or some fraction thereof) and just convert to display format when needed. You'd have a single variables "seconds" and just derive the other units from it as needed, with some variant of what we have seen. (I thought I had offered some code to you before that does this.
)