2012-06-28 9 views
14

W programie Ruby 1.9 chcę sformatować bieżący czas, taki jak Thu 1:51 PM. Jakiego formatu kodu należy użyć na godzinę dnia (1 w tym przykładzie)?Jak mogę napisać godzinę czasu bez wiodącego zera lub przestrzeni wiodącej?

Time.now.strftime '%a %I:%M %p' #=> "Thu 01:51 PM" 
Time.now.strftime '%a %l:%M %p' #=> "Thu 1:51 PM" 

%I ma wiodącą zero (01). %l ma wiodącą przestrzeń ( 1). Nie widzę żadnego innego kodu formatu dla godziny w strftime documentation. Nie mogę użyć .lstrip, ponieważ spacja znajduje się w środku łańcucha. Mogę użyć .gsub(/ +/, " "), ale zastanawiam się, czy jest mniej hacky, prostszy sposób.

Odpowiedz

36
Time.now.strftime '%a %-l:%M %p' #=> "Thu 1:51 PM" 

Zapis %-l zamiast %l. - usuwa początkowe spacje i zera.

Możesz użyć - również z innymi kodami formatu. Dokumentacja Stritime w Ruby wspomina nawet o %-m i %-d, ale nie wspomina o tym, że można użyć kodu -. Tak więc, %-I dałby taki sam wynik, jak %-l. Ale polecam %-l, ponieważ użycie l zamiast I oznacza dla mnie, że nie chcesz niczego na początku - przestrzeń, którą pisze, wygląda bardziej przypadkowo.

Można również zobaczyć an exhaustive list of Ruby 1.8strftime format codes, w tym te z - i podobnymi składniami _ i 0. Mówi, że Ruby 1.8 na Mac OS X nie obsługuje tych rozszerzonych składni, ale nie martw się: działają one w Rubim 1.9 na moim komputerze z OS X.

+0

Życzenie, aby każde rozwiązanie było takie proste i proste. +1 – flarn2006

+0

To rozwiązanie może działać tylko w systemach uniksowych, a nie w systemie Windows. [Ta odpowiedź na "Python' strftime' - date without leading 0? "(Https://stackoverflow.com/a/2073189/578288) dotyczy tego samego zadania w Pythonie i mówi, że'% -' działa tylko na Unix. [Dlaczego "% -d" lub "% -e" usuwa wiodącą przestrzeń lub zero?] (Https://stackoverflow.com/q/28894172/578288) mówi, że niezgodność jest spowodowana tym, że Python wywołuje system operacyjny operatora 'strftime', który może mieć rozszerzenia specyficzne dla platformy. Nie wiem, czy "strftime" Ruby jest takie samo. –

Powiązane problemy