I think they put the schedules up one, max two, weeks in advance. I only work Thursdays/Saturdays though, so I don't see them till late on [the week runs from Sunday-Saturday]. However, I have set contracted hours, so it isn't that much of a problem for me...
At my old job, they used to put them up three weeks in advance. Again, I worked set hours. However, they decided to schedule people in lots of extra days during Christmas/New Year but refused to put up the rota until 1 week before Christmas! When I checked it, they had made it so I only had Christmas Day and 1 other day off during my two-week school holiday. I wasn't impressed to say the least lol... :/