Во-первых, белые ночи - это всё-таки ненаступление ночи, т.е. сумерки, которые начинаются заходом и заканчиваются восходом солнца. Сумерки - это светлый отрезок времени, когда солнце уже находится за горизонтом, но всё ещё обеспечивает достаточную освещённость для большинства видов человеческой деятельности. Так вот, белых ночей как таковых не бывает ни в Москве, ни в Санкт-Петербурге. Самый южный крупный город, где есть белые ночи, это Петрозаводск.
А в Москве и С-Петербурге наблюдаются и всегда, сколько стоят эти города, наблюдалось одно и то же явление, а именно поздние/ранние сумерки и очень светлые короткие ночи.
Период от восхода до заката солнца (т.н. световой день) в Москве 22 июня составляет 17,5 часов. С "последним" переводом часов солнце взойдёт в 3:44 утра и сядет в 21:20. Сумерки обычно длятся час до и час после восхода / захода солнца, т.е. ночь закончится в 2:44 (вы спать-то успеете лечь, а?) и начнётся в 22:20. И теперь представьте, что всего за 4 часа солнце буквально проползает под горизонтом и встаёт на 30 градусов восточнее чем село. Выглядит очень эффектно - в студенчестве я как-то провёл с друзьями одну из июньских ночей на крыше 17тиэтажки, наблюдая за тем, как солнце ползёт за горизонтом - зарево так и не исчезло.
Теперь о Питере - там 22 июня на полтора часа длиннее, чем в МСК, т.е. ночь закончится в два часа ночи и начнётся в полночь. Таким образом, ночь всё-таки будет, но продлится всего два часа.
Потому что с прошлого года мы живем по зимнему времени, и светает на час раньше. Темнеет тоже на час раньше, но от поздних закатов все уже отвыкли.
К сказанному выше могу довавить, что из-за преломления солнечного света в верхних слоях атмосферы, небо освещено некоторое время после заката и до восхода Солнца.
Потому что практически безоблачное небо. Поэтому складывается подобное ощущение. Обратите внимание на рассвет, когда обещают осадки. Небо затянуто низкими облаками, и из-за этого создаётся ощущение темноты.