How to Time the arduino using RTC that i can operate the valves at 7am, 12pm and 4 am.?

/ The idea of this project is to open 3 valves one after the other for 5 minutes each, at a time like like 7am, 12pm, 4pm in a day.
// The for loop should be executed at 7am, where valve 1 is open and water is pumped for 5minutes, then valve 1 closes and valve 2 runs for 5 minutes, then valve 3 opens and runs for 5 minutes.
// the program comes to a stop. now at 12pm, the same cycle or process repeats for the 3 valves.
// The question is how do i Time the arduino using the RTC that i can operate the valves at 7am, 12pm and 4 am. ???

#include <SoftwareSerial.h>

#include <DS3231.h>

// intialise Valves for Each Vegetation Bed

int valvePorts = { 4,5,6};

int valveCount= 3;

DS3231 rtc(SDA, SCL);

Time t;
const int OnHourOne = 12; // assuming that one Tank- valve takes 5minutes each

const int OnMinOne = 00;

const int OffHourOne = 12;

const int OffMinOne = 30;

const int OnHourTwo = 16;

const int OnMinTwo = 00;

const int OffHourTwo = 16;

const int OffMinTwo = 30;

void setup()

{

for( int thisvalve=0; thisvalve<=valveCount; thisvalve++)

{

pinMode(valvePorts[thisvalve], OUTPUT);

}

pinMode(Waterpump,OUTPUT); // Waterpump

Serial.begin(9600);
}

void loop()

{

t = rtc.getTime();

Serial.print(t.hour);

Serial.print(" hour(s), ");

Serial.print(t.min);

Serial.print(" minute(s)");

Serial.println(" ");

delay (1000);

if(t.hour == OnHour && t.min == OnMin)

{

 Startwatering(1);


}

else if(t.hour == OffHour && t.min == OffMin)

{
Startwatering(0);

}

void Startwatering(int id)

{

     if( id== 0)
              {

                return;

              }



 //while(valvePorts[thisvalve],HIGH)

  if(id==1)

 {

for( int thisvalve=0; thisvalve <=valveCount; thisvalve++)

pinMode(valvePorts[thisvalve], OUTPUT);

{

digitalWrite(Waterpump,LOW);

delay(5000)

} // close for loop

 }// close if loop 

} // close for loop