2016-06-16 14 views
0

Ich möchte die Dauer in Millisekunden konvertieren. Also habe ich diesen Ausdruck ...Wie formatiere ich eine Dauer in Stunden, Minuten und Sekunden?

Time.parse(duration_expr).seconds_since_midnight * 1000 

in dem die Dauer Ausdruck der Form "HH: MM: SS" ist. Wenn der Ausdruck für die Dauer jedoch die Form "MM: SS" oder nur "SS" hat, kann das obige Ergebnis nicht die korrekte Anzahl von Millisekunden ergeben. Wie nehme ich einen Ausdruck wie "MM: SS" oder "SS" und wandle ihn in "HH: MM: SS" um?

Ich verwende Rails 4.2.3. Danke, - Dave

Antwort

0

Versuchen Sie, diese

def convert_to_hrs(string) 
    case string.count(':') 
    when 0 
    '00:00:' + string.rjust(2, '0') 
    when 1 
    '00:' + string 
    else 
    string 
    end 
end 
[30] pry(main)> convert_to_hrs('1') 
=> "00:00:01" 
[31] pry(main)> convert_to_hrs('12:01') 
=> "00:12:01" 
[32] pry(main)> convert_to_hrs('12:12:01') 
=> "12:12:01" 
0

Warum können Sie nicht nur die Zeichenfolge pad? wenn es 5 Zeichen lang ist, setze "00:" an die Vorderseite, und wenn es 2 Zeichen lang ist, setze "00:00:" an die Vorderseite. Time.parse wird an beiden gut funktionieren.

Ich bin sicher, es gibt schönere Möglichkeiten, reguläre Ausdrücke und Zeichenfolgenformatierern zu verwenden, aber das ist die grundlegende Logik, die Sie wollen. (Solange Ihre Formate sind nicht komplizierter zu bekommen, als hier angedeutet.)

Verwandte Themen