Applying an interval
<?php
$d = new DateTimeImmutable( 'Apr 20th, 2018' );
echo $d->format( "l Y-m-d\n" );
$i = DateInterval::createFromDateString( "next weekday" );
echo $d->add( $i )->format( "l Y-m-d\n" );
$i = DateInterval::createFromDateString( "3 months 10 days" );
echo $d->sub( $i )->format( "l Y-m-d\n" );
?>
Result:
Friday 2018-04-20
Monday 2018-04-23
Wednesday 2018-01-10