Scheint, als würde das Minus mit Ruby 1.8.7 gut funktionieren, danke!
Rob
2
@Rob: Ja, es funktioniert, solange Ihr System es strftimeunterstützt (z. B. funktioniert es hier nicht unter 1.8.7, das auf Mac OSX Snow Leopard ausgeführt wird).
Draegtun
Ah ja, ich hätte klarstellen sollen, dass es 1.8.7 unter Ubuntu Linux war
Rob
Hat für mich gearbeitet. 1.9.2p180 unter Ubuntu.
B Seven
Funktioniert für mich mit 1.9.3 auf FreeBSD 9
user569825
39
Hier ist die Formatierungsliste, von der ich ausgehe. Dies ist aus den Dokumenten für 2.1.3. Demnach möchten Sie %-m:
Date(Year,Month,Day):%Y -Year with century (can be negative,4 digits at least)-0001,0000,1995,2009,14292, etc.%C - year /100(rounded down such as 20in2009)%y - year %100(00..99)%m -Month of the year, zero-padded (01..12)%_m blank-padded (1..12)%-m no-padded (1..12)%B -The full month name (``January'')%^B uppercased (``JANUARY'')%b -The abbreviated month name (``Jan'')%^b uppercased (``JAN'')%h -Equivalent to %b%d -Day of the month, zero-padded (01..31)%-d no-padded (1..31)%e -Day of the month, blank-padded (1..31)%j -Day of the year (001..366)Time(Hour,Minute,Second,Subsecond):%H -Hour of the day,24-hour clock, zero-padded (00..23)%k -Hour of the day,24-hour clock, blank-padded (0..23)%I -Hour of the day,12-hour clock, zero-padded (01..12)%l -Hour of the day,12-hour clock, blank-padded (1..12)%P -Meridian indicator, lowercase (``am''or``pm'')%p -Meridian indicator, uppercase (``AM''or``PM'')%M -Minute of the hour (00..59)%S -Second of the minute (00..60)%L -Millisecond of the second (000..999)The digits under millisecond are truncated to not produce 1000.%N -Fractional seconds digits, default is 9 digits (nanosecond)%3N millisecond (3 digits)%6N microsecond (6 digits)%9N nanosecond (9 digits)%12N picosecond (12 digits)%15N femtosecond (15 digits)%18N attosecond (18 digits)%21N zeptosecond (21 digits)%24N yoctosecond (24 digits)The digits under the specified length are truncated to avoid
carry up.Time zone:%z -Time zone as hour and minute offset from UTC (e.g.+0900)%:z - hour and minute offset from UTC with a colon (e.g.+09:00)%::z - hour, minute and second offset from UTC (e.g.+09:00:00)%Z -Abbreviated time zone name or similar information.Weekday:%A -The full weekday name (``Sunday'')%^A uppercased (``SUNDAY'')%a -The abbreviated name (``Sun'')%^a uppercased (``SUN'')%u -Day of the week (Monday is 1,1..7)%w -Day of the week (Sunday is 0,0..6)
ISO 8601 week-based year and week number:The first week of YYYY starts with a Mondayand includes YYYY-01-04.The days in the year before the first week are in the last week of
the previous year.%G -The week-based year%g -The last 2 digits of the week-based year (00..99)%V -Week number of the week-based year (01..53)Week number:The first week of YYYY that starts with a SundayorMonday(according to %Uor%W).The days in the year before the first week are in week 0.%U -Week number of the year.The week starts with Sunday.(00..53)%W -Week number of the year.The week starts with Monday.(00..53)Seconds since the Epoch:%s -Number of seconds since 1970-01-0100:00:00 UTC.Literal string:%n -Newline character (\n)%t -Tab character (\t)%%-Literal``%'' characterCombination:%c - date and time (%a %b %e %T %Y)%D -Date(%m/%d/%y)%F -The ISO 8601 date format (%Y-%m-%d)%v - VMS date (%e-%^b-%4Y)%x -Same as %D%X -Same as %T%r -12-hour time (%I:%M:%S %p)%R -24-hour time (%H:%M)%T -24-hour time (%H:%M:%S)
Aktualisiert auf die neuesten 2.1.3-Dokumente am 24.10.14
Ich suche nach einem Weg, um den Monat ohne die führende Null zu bekommen ... nicht den Tag.
Shpigford
2
Warum stimmen alle diesen Beitrag ab? Ich hätte gedacht, diese Liste von Strftime-Helfern wäre nützlich!
Rob Cameron
4
Ich stelle mir vor, dass die Leute es ablehnen, weil es die Frage nicht beantwortet. Die Liste ist an sich sehr nützlich, aber keine dieser Optionen verhindert die führende "0" für den Monat, wie vom OP angefordert.
Benry
1
+1 Obwohl diese Frage die ursprüngliche Frage nicht beantwortet, ist sie für andere Personen nützlich, die nach etwas Ähnlichem googeln, aber nicht genau nach dem OP.
David Oneill
1
% e bietet einen führenden Platz (dh "1/01/2012"), der unerwünscht sein kann und nicht unbedingt dem entspricht, was das OP wollte.
Brad
8
In den Dokumenten werden verschiedene Optionen zum Konfigurieren des Zahlenformats angezeigt. Wenn Sie das% -d-Format hinzufügen, können Sie diese Flags auch anstelle von "-" verwenden:
Flags:- don't pad a numerical output.
_ use spaces for padding.
0 use zeros for padding.
^ upcase the result string.
# change case.
: use colons for %z.
Antworten:
Einige Versionen von
strftime
do erlauben das Präfixieren mit Minus , um führende Nullen zu formatieren, z.Dies hängt jedoch
strftime
von Ihrem System ab. Aus Gründen der Konsistenz würde ich stattdessen so etwas tun:quelle
strftime
unterstützt (z. B. funktioniert es hier nicht unter 1.8.7, das auf Mac OSX Snow Leopard ausgeführt wird).Hier ist die Formatierungsliste, von der ich ausgehe. Dies ist aus den Dokumenten für 2.1.3. Demnach möchten Sie
%-m
:Aktualisiert auf die neuesten 2.1.3-Dokumente am 24.10.14
quelle
In den Dokumenten werden verschiedene Optionen zum Konfigurieren des Zahlenformats angezeigt. Wenn Sie das% -d-Format hinzufügen, können Sie diese Flags auch anstelle von "-" verwenden:
quelle
Ich hatte ein ähnliches Problem und habe es durch Konvertieren
strftime("%m")
in eine Ganzzahl behoben .Beispielsweise:
Einfach, aber nicht elegant.
quelle