Ruby/Date/to Time
Материал из Wiki.crossplatform.ru
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.