Using the delay vs millis to sequence relays

can this be done better using the millis command?

Absolutely. What you need to do is record when the switch becomes pressed. Periodically, you see if it has been long enough that it is now time to turn the relay on.

You need to record when the switch becomes released, so that you can see when it has been released long enough so that you need to turn the relay off.

The state change detection and the blink without delay examples have all the clues you need.