You can model year/time/week in various ways. First of all, I wonder if there really is an effect of month when adjusting for week? It depends on what you measure, obviously, but still, any effect that varies across the year should be taken care of by week.
In any case, I recommend using regression splines in a generalized additive model to do this. To take the correlation between repeated measurements within each city into account, you need to use a mixed model, so a generalized additive mixed model will be fine. Using R code:
M1 <- gamm(outcome ~ temperature + precipitation + s(year) + s(month) + s(week), random=~1|city)
And you can also try without month:
M2 <- gamm(outcome ~ temperature + precipitation + s(year) + s(week), random=~1|city)
You can now compare the models since the models are nested:
The second model is nested within the first, and a low p-value indicates that month should be kept, and a high p-value indicates that it should be dropped from the model.