And because it can't be May or June because then Albert would not have said that he knows Bernard doesn't know, because if Albert had May or June then Bernard may have had 19 or 18, and because those are unique, Bernard would have known the birthday. Albert saying Bernard doesn't know, therefore means Albert has July or August.
With him having 16, and 16 only being in July, and May, and Bernard knowing it's definitely not May (see above), it's July 16.
And we can find out that he has 16, from the statement after:
If Bernard had 14, then he could not have known the correct date, because it could have been July or August. So he could not have made statement 2.
If he had 15 or 17, then Albert would have 'August', but Albert could not know whether the date was the 15th or 17th of August. Thus he could not have made statement 3.
Only July 16th is compatible with all statements. And Bernard knows (as he has 16 from the start), as soon as May is out.
From Albert's point of view, he only knows the month and that the list is limited to the three possible dates you mentioned before. But Albert also knows that the birthday occurs in July, and the only possible remaining date of the three that would allow Bernard to figure out the birthday that is consistent with Albert's knowledge of the month is July 16.
Now if it were the 15th or the 17th Albert would not be able to reach a conclusion, but he does. So we are left with only the 16th.
The number of layers to this is more than it seems.
Deleted comment