It took me a while to figure out, and I felt pretty stupid at times. I browsed the comments for clues and found that:
The right answer is
I sensed this to be true as soon as I saw comments indicating as much...
even when those comments did not explain why...
and I immediately trusted the comments which did supply an explanation...
despite finding some of them cryptical and unhelpful at first.
When I finally understood them, I realized that I had been stumped by their wording...
and the fact that they fail to explicitly spell out one crucial detail.
But what truly amazes me is the amount of wrong answers and convoluted explanations that come after the correct ones - there are thousands of them!
* These are the comments that I found useful (but not completely satisfactory):
Can't be May 19 or June 18, or Bernard would know.
Can't, therefore, be May or June, or Albert wouldn't know that Bernard doesn't know.
Albert's statement means that Bernard now knows it is either July or August.
So it can't be July 14 or August 14, or else Bernard still wouldn't know the birthday, which means it's either July 16, August 15 or August 17.
If Albert had been told August, then Bernard's statement wouldn't help him in figuring out Cheryl's birthday, which means he had to have been told July.
Therefore it must be July 16th.
July 16. When Albert says he knows for sure that Bernard doesn't not know the birthday, it immediately rules out May and June, as both contain dates which could instantly give away the answer (18th and 19th)
Then, when Bernard says that Albert's statement has given him the answer, the date has to be 16th, as all other dates in July and August are repeated elsewhere in the list.
Ergo July 16