As strawberry jam has said, it's the same reason as why you would translate them respectively as "I go to school at nine o'clock" and "Today I don't go to school" (where the に would fulfil the same function as the "at").
This is, however, also a case of spoken language vs. grammatical language, as the most correct way of writing B would be 今日は学校へ行きません。
今日 goes with は instead of に because 1)it affects the entirety of the sentence, while the 七時 in A affects only the verb, and 2) it's not an exact timeframe, but a broad one (Flaw's link may help to understand it better).
When speaking, some particles tend to be dropped for certain uses either because those particles are the default for its context, like the は when stablishing the day (今日, 昨日, 明日, 一昨日, 明後日, 一昨昨日, 明明後日, which is "today", "yesterday", "tomorrow", "the day before yesterady", "the day after tomorrow", "three days ago", "in three days"), or to avoid possible repetitions, like the を with names that become verbs with する.