2016-04-18 10 views
0

Ich möchte alle Stunden Minuten Möglichkeiten eines Tages im 24h Format zählen xx: xx (muss in String sein)Zählung von Minuten und Stunden eines Tages, Hinzufügen führender Null bis Min und Stunde, wenn eine Ziffer - Ruby

jedoch habe ich mit bekommen die führenden Nullen am kämpfen:

Hier ist, was ich bisher habe:

24.times { |h| 60.times { |m| puts "#{h}:#{m}" } } 

0:0 
0:1 
... 
0:10 
... 
1:1 
... 
10:1 
... 
23:59 
Gewährt

Ich möchte führende Nullen sowohl Stunde haben und min

00:00 
... 
23:59 

Kann es in dieser eine Zeile durchgeführt werden oder muss ich auseinander diese Schleifen aufgeteilt?

+0

gibt es einen Grund, warum Sie diese als Strings tun statt einer Zeit obj? – Anthony

+0

Ja, es gibt einen Grund ... – mahatmanich

+0

@mahatmanich Was ist der Grund? Es ist immer wichtig, Ihre Einschränkungen zu kennen. – tadman

Antwort

1

Sie können Zahlen wie folgt mit der Syntax formatieren: "0Nd" % i Dabei ist N der Auffüllbetrag (2 in Ihrem Fall) und i ist die Nummer, die Sie auffüllen möchten.

24.times { |h| 60.times { |m| puts "#{"%02d" % h}:#{"%02d" % m}" } } 
+0

Perfekt! Vielen Dank! – mahatmanich

3
(24*60).times { |m| puts "%02d:%02d" % m.divmod(60) } 
00:00 
00:01 
00:02 
00:03 
00:04 
00:05 
00:06 
00:07 
00:08 
00:09 
00:10 
... 
23:55 
23:56 
23:57 
23:58 
23:59 

Ein anderer Weg:

require 'time' 
(24*60).times { |t| puts Time.at(t).strftime("%H:%M") } 
+0

Das zweite ist wirklich funky! – mahatmanich