how to make led stay for 5 seconds without delay command

how to make led stay for 5 seconds without delay command
i am using ultra sonic sensor but the led cannot stay on for few seconds

#define trigPin 7
#define echoPin 6
#define led3 11
#define led4 10
#define led5 9
#define led6 8


void setup() {
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);

}

void loop() {
  

   
 
  long duration, distance;
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
distance = duration/58;
 

 
 
  if (distance < 15) {
      digitalWrite(led3, HIGH);
  
} 
  else {
    digitalWrite(led3, LOW);
  }
  if (distance < 12) {
    digitalWrite(led4, HIGH);
   

}
  else {
    digitalWrite(led4,LOW);
  }
  if (distance < 8) {
    digitalWrite(led5, HIGH);

}
  else {
    digitalWrite(led5,LOW);
  }
  if (distance < 5) {
    digitalWrite(led6, HIGH);

}
  else {
    digitalWrite(led6,LOW);
  }
 
  if (distance > 30 || distance <= 0){
    Serial.println("Out of range");
  }
  else {
    Serial.print(distance);
    Serial.println(" cm");

  }
  delay(50);
}

Untested.

const byte trigPin = 7;
const byte echoPin = 6;
const byte led3 = 11;
const byte led4 = 10;
const byte led5 = 9;
const byte led6 = 8;
unsigned long duration, distance;
boolean printed; // for 'out of range'
boolean ledState; // on or off
unsigned long ledTime; // when leds were turned on
unsigned long interval = 5000; // burn time

void setup() {
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
}

void loop() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = duration / 58;
  if (distance > 30 || distance <= 0) {
    if (!printed) { // if not printed
      Serial.println(F("Out of range"));
      printed = true; // print once
    }
  }
  else { // if in range
    Serial.print(F("Distance is "));
    Serial.print(distance);
    Serial.println(F(" cm"));
    if (distance < 15) digitalWrite(led3, HIGH);
    if (distance < 12) digitalWrite(led4, HIGH);
    if (distance < 8) digitalWrite(led5, HIGH);
    if (distance < 5) digitalWrite(led6, HIGH);
    ledState = true; // remember led(s) are on
    ledTime = millis(); // note the time
    printed = false; // enable printing 'out of range'
  }
  if (ledState && millis() - ledTime > interval) { // if a led is on and time is up
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
    digitalWrite(led6, LOW);
    ledState = false; // leds are off
  }
  delay(50);
}

Thanks a lot it’s working very well