In my opinion it might be helpful to reframe the question with a little more precision.
When you say "I need to", it creates a little doubt about what's supposed to happen. It's hard to say if you need the contract to determine this, or you need the contract owner to determine this, or someone else. This will be important.
Solidity doesn't have a
month word and I suspect this it due to inherent ambiguity, since months have different numbers of days. It seems "month" and "30 days" are casually interchanged in informal conversation but contracts are roughly the opposite of informal. One will have to define, precisely, what is meant by "month" in the context of the contract.
Setting aside the imprecision of timestamps, you could do something like:
now + 30 days
That is, in the case that the contract needs to be able to figure it out.
Or, you could outsource it to an Oracle.
function setNextMonth(uint nextMonth) public onlyOwner ...
That is, in the case that you want to figure out exactly when each month starts and you don't want to over-complicate the contract.
A third approach would be to perform a rather cumbersome calculation, taking into account the different number of days in each month and leap years. This pushes (pretty hard) against the ideal of minimalism in contract design.
You could even imagine crowd-sourcing the computation via opinion markets, since the correct choice is obvious. In that construction, "next month" is the block number decided by a majority on a platform like Auger or Gnosis.
Hope it helps.