Try:
DECLARE @d datetime = '2017-05-24 08:00:00.000';
WITH tally(n)
AS (
SELECT
t.n
FROM
( VALUES ( 0), ( 1), ( 2), ( 3), ( 4), ( 6), ( 7), ( 8), ( 9) ) t (n)
) ,
tally2
AS (
SELECT
Row_Number() OVER (ORDER BY t4.n) Rn
FROM
tally t1
CROSS APPLY tally t2
CROSS APPLY tally t3
CROSS APPLY tally t4
)
SELECT
@d Dt
UNION
SELECT
DateAdd(MINUTE, tally2.Rn, @d)
FROM
tally2
WHERE
tally2.Rn <= 960
AND tally2.Rn % 15 = 0
AND DateAdd(MINUTE, tally2.Rn, @d)<=DateAdd(HOUR, 8, @d);