Despite using millis() the net result is not much different than simply using delay().
Is there nothing else the CPU could be doing than waiting 60-seconds staring only at an hourglass? If you want to expand the program later to add functionality, to add more than one thing going on at a time, how will you integrate that when so much of the CPUs time is taken up with a DoNothing() function?
mmm, the answer is... Using long delay() my code CPU is freezing. I am using delay() like timeout because my MCU is communicating with GRPS module using AT commands. I need wait the answer before send next command. The problems is when the signal GPRS is not good, the answer take a long time.
In general, you should avoid the use of delay() for any reason. You need to wrap your head around the concept of pseudo-concurrency, or sometimes called cooperative multithreading. There is an excellent article at Overview | Multi-tasking the Arduino - Part 1 | Adafruit Learning System that explains this.
My advice has always been, if you write a delay() statement in anything other than a toy example, you have made a fundamental design error. If you think you have an exception to this rule, you are wrong.
Then the worst thing you can do is sticking your head in the sand for 60 seconds. You will overflow your input buffer and might "freeze up."
Process every character as it arrives. If you get the sequence of characters you were expecting then great! If you don't get the expected sequence and it has been more than X hundred milliseconds since you asked for the data, try again. If it has been more than Y thousand milliseconds then stop trying and raise an error.
On the other hand, I am using actually a interrupt and deep sleep mode, working okay with atmega328p and rtc ds3231. But I can say with my experience testing battery life, the best option is using a ultra low power timer IC.
I am testing delay() but I am not using delay() in my main code, so @MorganS my code process each character
I am not a expert programming, but using this code my project was working 18 hrs sending data from inside a small sewer. Maybe was only a current problem when the water pressure sensor is varying the resistence. I don't know, in the testing without sensor and traveling with the project for a long period using the battery at least was working 10 days without problem.