· 2 min read
Scripttip: Countdown in Ruby
Falls nicht schon vorhanden muss erst das gem installiert werden:
[bash] gem install chronic_duration # ggf. ein ‘sudo’ voranstellen [/bash]
Wenn die Dauer für den Countdown bekannt ist, kann man diese direkt verwenden: [ruby] # Die benötigten Bibliotheken require ‘rubygems’ require ‘chronic_duration’ require ‘time’
dauer = 180 # Die Dauer in Sekunden
# Hier wird nun jede Sekunde die Restzeit berechnet und ausgegeben dauer.times {|x| sleep 1; puts ChronicDuration.output(dauer - x)}
# Ausgabe 3 mins 2 mins 59 secs 2 mins 58 secs 2 mins 57 secs 2 mins 56 secs 2 mins 55 secs 2 mins 54 secs 2 mins 53 secs 2 mins 52 secs … 2 mins 2 secs 2 mins 1 sec 2 mins 1 min 59 secs 1 min 58 secs … 1 min 2 secs 1 min 1 sec 1 min 59 secs 58 secs … 3 secs 2 secs 1 sec [/ruby]
Wenn Anfangs- und Zielzeit verwendet werden sollen, müssen wir erst die Countdown-Zeit berechnen:
[ruby] # Die benötigten Bibliotheken require ‘rubygems’ require ‘chronic_duration’ require ‘time’
# Anfangs- und Zieldatum setzen und die Differenz berechnen anfangsDatum = Time.now => Thu Sep 09 10:13:23 +0200 2010
zielDatum = Time.parse ‘2010-09-10 08:02:00 +0100’ => Fri Sep 10 09:02:00 +0200 2010
countdownZeit = (zielDatum - anfangsDatum).to_i # Ergebnis auf volle Sekunden gerundet => 82116
# Hier wird nun jede Sekunde die Restzeit berechnet und ausgegeben countdownZeit.times {|x| sleep 1; puts ChronicDuration.output(countdownZeit - x)}
# Ausgabe 22 hrs 48 mins 36 secs 22 hrs 48 mins 35 secs 22 hrs 48 mins 34 secs 22 hrs 48 mins 33 secs 22 hrs 48 mins 32 secs …
[/ruby]