Ваша версия фактически сравнивает ВТОРОЙ четверг:
php > echo date('c', strtotime('first wednesday, first thursday'));
2011-12-08T00:00:00-06:00 <--- dec 8th = thursday, but not **THE** first thursday
php > echo date('c', strtotime('first wednesday'));
2011-12-07T00:00:00-06:00 <--- dec 7th = wednesday
php > echo date('c', strtotime('today'));
2011-12-01T00:00:00-06:00 <-- dec 1st = thursday <-- actual first thursday of the emonth
strtotime довольно хорошо угадывает, что вы хотите, но это не безошибочно, и это один из случаев, когда он взрывается у вас на лице. Он находит «первый четверг», который происходит ПОСЛЕ сегодняшнего дня, а не первого четверга месяца.
php > echo date('c', strtotime('first thursday december'));
2011-12-08T00:00:00-06:00
php > echo date('c', strtotime('thursday december'));
2011-12-01T00:00:00-06:00
php > echo date('c', strtotime('thursday'));
2011-12-01T00:00:00-06:00
Не особо интуитивно понятен.
Вам было бы лучше использовать формальные вызовы DateTime, чтобы получить "день недели" фактического первого дня текущего месяца и посмотреть, является ли это среда / четверг.