Ruby strftime: Mois sans zéro?

La strftime de Ruby a- strftime -elle un format pour le mois sans zéro non strftime ?

J’ai trouvé %e pour obtenir le jour sans zéro, sans avoir de chance avec le mois.

9/1/2010 finalement une date formatée comme: 9/1/2010

Certaines versions de strftime permettent de préfixer avec moins pour formater les zéros en tête, par exemple:

 strftime "%-d/%-m/%y" 

Cependant, cela dépendra de la strftime de votre système. Donc, pour la cohérence, je ferais quelque chose comme ça:

 dt = Time.local(2010, 'Sep', 1) printf "%d/%d/%d", dt.day, dt.month, dt.year 

Voici la liste de formatage dont je parle. Ceci provient des docs pour 2.1.3. Selon cela, vous voudriez %-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 20 in 2009) %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 (eg +0900) %:z - hour and minute offset from UTC with a colon (eg +09:00) %::z - hour, minute and second offset from UTC (eg +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 Monday and 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 Sunday or Monday (according to %U or %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-01 00:00:00 UTC. Literal ssortingng: %n - Newline character (\n) %t - Tab character (\t) %% - Literal ``%'' character Combination: %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) 

Mis à jour au dernier 2.1.3 docs le 24/10/14

Docs présente un certain nombre d’options différentes pour configurer le format numérique. En ajoutant au format% -d, vous pouvez également utiliser ces indicateurs au lieu de “-“:

 Flags: - don't pad a numerical output. _ use spaces for padding. 0 use zeros for padding. ^ upcase the result ssortingng. # change case. : use colons for %z. 

J’ai eu un problème similaire et corrigé en convertissant strftime("%m") en un entier.

Par exemple:

 strftime("%m")+0 give the current month as integer 'without leading zero' 

Simple, mais pas élégant.