As all backend problems, it is subject to cyclical development.
Actually, mixing all the parts of the top part of the clock could help - constants living in DB or a file, simple rules written in DSL that makes them short and comp[lex rules having access to the hardcoded methods.