<?php
$db 
= new DateTimeImmutable'2018-12-31' );
$de = new DateTimeImmutable'2019-12-31' );
$di DateInterval::createFromDateString(
    
'first thursday of next month'
);
$dp = new DatePeriod(
    
$db$di$deDatePeriod::EXCLUDE_START_DATE
);
foreach ( 
$dp as $dt )
{
   echo 
$dt->format"F jS\n" );
}
?>
Output
January 3rd February 7th March 7th April 4th May 2nd June 6th July 4th August 1st September 5th October 3rd November 7th December 5th