Determinando a Hora em que uma Data Começa

Digamos que eu queira criar um planejador diário e que eu queira dividir o dia em pedaços de 15 minutos.

Fácil né? Apenas comece à meia-noite e ... Errado! Na América / São_Paulo, um dia de cada ano começa às 01:00 devido a alterações no horário de verão.

Dado um fuso horário e uma data, como encontrar a hora da época em que o dia começa?

Meu primeiro pensamento foi usar o seguinte, mas supõe que todos os dias tenham 23:59. Provavelmente, isso não é melhor do que assumir que cada dia tem meia-noite.

perl -MDateTime -E'
   say
      DateTime->new( year => 2013, month => 10, day => 20 )
      ->subtract( days => 1 )
      ->set( hour => 23, minute => 59 )
      ->set_time_zone("America/Sao_Paulo")
      ->add( minutes => 1 )
      ->strftime("%H:%M");
'
01:00

Existe uma alternativa mais robusta ou mais direta?

questionAnswers(7)

yourAnswerToTheQuestion