Try this:
public static DateTime? FindMonthWeekDay( int year, int month, int offset )
{
if ( offset < 1 || offset > DateTime.DaysInMonth( year, month ) )
{
throw new ArgumentOutOfRangeException( "offset" );
}
DateTime moment = new DateTime( year, month, 1 );
while ( moment.Month == month )
{
DayOfWeek dayOfWeek = moment.DayOfWeek;
if ( dayOfWeek != DayOfWeek.Saturday && dayOfWeek != DayOfWeek.Sunday )
{
offset--;
}
if ( offset == 0 )
{
return moment;
}
moment = moment.AddDays( 1 );
}
return null;
}
Use
offset=1
for the first day,
offset=2
for the second day...