Cheryl has told A and B that her birthday is one of these ten dates:
May 15, 16, 19
June 17, 18
July 14, 16
August 14, 15, 17
She has told A the month and B the number of the day, and they both know this.
A says, 'I do not know C's birthday.
This tells us nothing, because whatever month he had been told A would not be able yet to deduce the birthday.
But B would know C's birthday if he had been told that the day was, say, 19: because 19 occurs in the list of options only in May. Likewise B would know the birthday if had been told that the day was 18: because this occurs only in June.
So, then A says:
'... but I know for sure that B does not know either.'
A would not be able to say this, if the month he had been told was May or June, because for each of these two months there is the possibility that B actually knows the birthday already.
From this B (and we) can deduce that the month of C's birthday is neither May nor June.
'At first I did not know C's birthday, but I do now.'
This means that the number of the day (which B knows) must occur in either July or August but NOT in both these months. For example, if B knew the day was 17 then he would know it had to be August 17. Likewise, B would know the birthday if the day was 16 (July) or 15 (July).
A has deduced all this as well! He knows that the day is 15, 16 or 17. But A also knows the month. And he then replies:
'Now I know as well!
Now A could only know the birthday if the month (which he knows) has only one of these three options in the list: 15, 16 or 17. That month is July.
This is how we (and B presumably now) know that Cheryl's birthday must be 16 July.