adding or subtracting an hour, rtc stuff

Here is how to do it using arrays.

Declare pump times:

const int NUM_PUMP_ON_TIMES = 4;

const int pumpOnTime[NUM_PUMP_ON_TIMES][3] = {{23, 59, 1}, {14, 22, 1}, {14, 23, 1}, {14, 24, 1}};

Turn the water pump on at the right time:

  for (int i = 0; i < NUM_PUMP_ON_TIMES; i++) {
    // remember, array indices start from 0
    if  (now.hour() == pumpOnTime[i][0] && now.minute() == pumpOnTime[i][1] && now.second() == pumpOnTime[i][2])
    {
      Serial.println("water pump is on");
      digitalWrite(waterpump, HIGH);
      wateron = millis();
    }
  }

Of course, you will still need the code to turn the water pump off at the right time, which you already have:

  if (digitalRead(waterpump) == HIGH)
  {
    if (millis() - wateron > watertime)
    {
      digitalWrite(waterpump, LOW);
      Serial.println("water pump is off");
    }
  }