Ruby/Date/to Time

Материал из Wiki.crossplatform.ru

(Различия между версиями)
Перейти к: навигация, поиск
м (1 версия: Импорт выборки материалов по Ruby)
 

Текущая версия на 18:00, 13 сентября 2010

Convert a date to gm time, local time

class Date
  def to_gm_time
    to_time(new_offset, :gm)
  end
  def to_local_time
    to_time(new_offset(DateTime.now.offset-offset), :local)
  end
  private
  def to_time(dest, method)
    usec = (dest.sec_fraction * 60 * 60 * 24 * (10**6)).to_i
    Time.send(method, dest.year, dest.month, dest.day, dest.hour, dest.min,
              dest.sec, usec)
  end
end
puts (datetime = DateTime.new(1990, 10, 1, 22, 16, Rational(41,2))).to_s
puts datetime.to_gm_time
puts datetime.to_local_time
puts time.to_datetime < datetime
puts time < datetime.to_gm_time
puts (time.to_datetime - datetime).to_f
puts time - datetime.to_gm_time



Convert second to date

def sec2dhms(secs)
  time = secs.round          # Get rid of microseconds
  sec = time % 60            # Extract seconds
  time /= 60                 # Get rid of seconds
  mins = time % 60           # Extract minutes
  time /= 60                 # Get rid of minutes
  hrs = time % 24            # Extract hours
  time /= 24                 # Get rid of hours
  days = time                # Days (final remainder)
  [days, hrs, mins, sec]     # Return array [d,h,m,s]
end
t = sec2dhms(1000000)        # A million seconds is...
puts "#{t[0]} days,"         # 11 days,
puts "#{t[1]} hours,"        # 13 hours,
puts "#{t[2]} minutes,"      # 46 minutes,
puts " and #{t[3]} seconds." # and 40 seconds.