Millis() to not start from 0?

I'm running a program with a switch state in it, and at some point I want a code block to run once after 10 seconds have elapsed, and then after every 30 seconds. I could just add an extra timer in the code, but there's already so much stuff in it that I was wondering if there's an easier way to do it.

let's say I have:

if (millis() - stateTime >= 30000) {
   stateTime = millis();
   [rest of code]
   }

Then is there a way to state something like the code below in the preceding switch state? i.e. something that initially sets stateTime at 20 seconds, so the if-statement gets triggered after 10 seconds, and then every 30 seconds.

stateTime = millis() + 20000;
Interval = 10000UL;
.
.
.

if (millis() - stateTime >= Interval) 
{
   stateTime = millis();
   Interval = 30000UL;
   // [rest of code]
}

One of the first four posts of this forum explains how to use millis(), and explains or provides links to explanations about why it does not matter that millis() does not start at zero and why you should only use subtraction with millis(), never addition.

Yes that answers the title of the thread but that doesn't seem to be the question that the body of the first message is asking.

vaj4088:
you should only use subtraction with millis(), never addition.

Although it does make the point here that the addition way is more intuitive and that it's rare for a program to run to rollover.

goTime = millis() + nextTime; // set when to do it again

So it can make sense to do it the intuitive way to better understand the approach and use subtraction once it's understood, or if it's likely to run to overflow.

Yes, but in 49 days that may stop and not start again until some multiple of 49 days later. (Depending on exactly how the value is used.)

LesserMole:
So it can make sense to do it the intuitive way to better understand the approach and use subtraction once it's understood, or if it's likely to run to overflow.

I disagree; one should not practice doing it in a way that will fail when the sketch is allowed to run for a long period of time. It teaches bad habits, and when you modify the program and decide to put it in use for a long period of time without reset, it's very easy to forget that you have to go back and change how you do the timing.