Код, который вы дали действительно правильный путь, чтобы получить число истекших минут с начала дня, и результаты верны. Несмотря на то, что время на часах составляет 3:05, до полуночи прошло только 2 часа и 5 минут, так как час между 2:00 и 3:00 был пропущен. Осенью у вас будет противоположный эффект: добавляется дополнительный час, так как повторяется час между 1:00 и 2:00.
Важно понимать, что DST не то же самое для всех. Во многих странах этого нет, и те, у кого есть это, не все делают это в одни и те же дни или в одно и то же время суток. Например, Бразилия возвращается в октябре и пропускает час с 00:00 до 01:00. Итак, в этот день полночь не существует. Начало дня - 1:00 в этот день. Надеюсь, это поможет вам понять, почему время, прошедшее с полуночи, не обязательно эквивалентно значению часов и минут на часах. Если полночь не существует, вопрос недействителен, и даже если он существует, который не учитывает возможные разрывы.
Тем не менее, если вам действительно нужно значение времени в день в качестве исходного количества минут, это довольно легко получить, что:
var m = moment("2015-03-08 03:05:00");
var result = m.hour() * 60 + m.minute();
Хотя имейте в виду, что это не прошедшее с полуночи.
признает также, что если у вас есть значение, как 2015-11-01 01:30:00
в США, что во время падения обратного перехода таким образом, есть два экземпляров 1:30. Сначала приходит 1:30 дневное время, затем через час приходит 1:30 стандартного времени. Вы можете вычислить 90
в результате этого времени, но это никоим образом не говорит вам, какой из двух экземпляров он был. Опять же, это не обязательно 90 минут с полуночи. Это может быть быть, или это может быть 150 минут с полуночи, если это было второе появление 1:30 утра.
См. Также, the DST tag wiki, в котором есть некоторые интересные графики, которые помогут вам визуализировать это.