On Tue, 17 Jan 2006, Detlef Reichl wrote:

> Try this:
>
> irb(main):040:0* t = Time.now
> => Mon Jan 16 21:27:58 CET 2006
> irb(main):041:0> m = t.mon
> => 1
> irb(main):042:0> nt = Time.mktime 2006, m + 1
> => Wed Feb 01 00:00:00 CET 2006
> irb(main):043:0> p nt.strftime("%B")
> "February"
> => nil
> irb(main):044:0> nt = Time.mktime 2006, m + 2
> => Wed Mar 01 00:00:00 CET 2006
> irb(main):045:0> p nt.strftime("%B")
> "March"
> => nil

but

   harp:~ > ruby -e'  p(Time::mktime(2006,13))  '
   -e:1:in `mktime': argument out of range (ArgumentError)
           from -e:1


i prefer the stupid approach:

     harp:~ > cat a.rb
     class Time
       def this_month
         strftime '%b'
       end
       def next_month n = 1
         t = dup
         s = 60 * 60 * 24
         n.times{ m = t.month; t += s until t.month != m }
         t.strftime '%b'
       end
     end

     t = Time::mktime 2006, 12
     p t.this_month
     p t.next_month
     p t.next_month(2)


     harp:~ > ruby a.rb
     "Dec"
     "Jan"
     "Feb"


regards.

-a
-- 
strong and healthy, who thinks of sickness until it strikes like lightning?
preoccupied with the world, who thinks of death, until it arrives like
thunder?  -- milarepa