Ruby 日期和时间

  • 日期和时间

    Time类表示日期和时间在Ruby中。它是操作系统提供的系统日期和时间功能上封装的一层。此类可能无法在您的系统上表示1970年之前或2038年之后的日期。本章使您熟悉所有最想要的日期和时间概念。
  • 获取当前日期和时间

    以下是获取当前日期和时间的简单示例
    
    time1 = Time.new
    puts "当前时间 : " + time1.inspect
    
    # Time.now 是同义词:
    time2 = Time.now
    puts "当前时间 : " + time2.inspect 
    
    尝试一下
  • 获取日期和时间的组成部分

    我们可以使用Time对象来获取日期和时间的各个组成部分。以下是显示相同内容的示例-
    
    time = Time.new
    
    # Components of a Time
    puts "当前时间 : " + time.inspect
    puts time.year    # => Year of the date 
    puts time.month   # => Month of the date (1 to 12)
    puts time.day     # => Day of the date (1 to 31 )
    puts time.wday    # => 0: Day of week: 0 is Sunday
    puts time.yday    # => 365: Day of year
    puts time.hour    # => 23: 24-hour clock
    puts time.min     # => 59
    puts time.sec     # => 59
    puts time.usec    # => 999999: microseconds
    puts time.zone    # => "UTC": timezone name
    
    尝试一下
  • Time.utc,Time.gm和Time.local函数

    这三个函数可用于以以下标准格式格式化日期-
    
    # July 8, 2008
    Time.local(2008, 7, 8)  
    # July 8, 2008, 09:10am, local time
    Time.local(2008, 7, 8, 9, 10)   
    # July 8, 2008, 09:10 UTC
    Time.utc(2008, 7, 8, 9, 10)  
    # July 8, 2008, 09:10:11 GMT (same as UTC)
    Time.gm(2008, 7, 8, 9, 10, 11)  
    
    以下是以以下格式获取数组中所有组件的示例-
    
    [sec,min,hour,day,month,year,wday,yday,isdst,zone] 
    
    尝试以下-
    
    time = Time.new
    values = time.to_a
    p values
    
    尝试一下
    数组可以传递给Time.utc或Time.local函数以获取不同的日期格式,如下所示:
    
    time = Time.new
    values = time.to_a
    puts Time.utc(*values)
    
    尝试一下
    以下是获取自(平台相关的)时代以来内部以秒表示的时间的方法-
    
    # 返回自纪元以来的秒数
    time = Time.now.to_i
    
    p time
    
    # 将秒数转换为Time对象。
    time = Time.at(time)
    
    p time
    # 返回自纪元以来的秒,其中包括微秒
    time = Time.now.to_f
    
    p time
    
    尝试一下
  • 时区和夏令时

    您可以使用Time对象来获取与时区和夏令时相关的所有信息,如下所示:
    
    time = Time.new
    
    # 这是解释
    time.zone       # =>“UTC”:返回时区
    time.utc_offset # => 0:UTC与UTC的距离为0秒
    time.zone       # =>“PST”(或任何时区)
    time.isdst      # => false:如果UTC没有DST。
    time.utc?       # => true:如果t在UTC时区
    time.localtime  # 转换为本地时区。
    time.gmtime     # 转换回UTC。
    time.getlocal   # 在本地区域返回一个新的Time对象
    time.getutc     # 以UTC返回新的Time对象
    
  • 格式化时间和日期

    有多种格式化日期和时间的方法。这是一个显示几个例子-
    
    time = Time.new
    puts time.to_s
    puts time.ctime
    puts time.localtime
    puts time.strftime("%Y-%m-%d %H:%M:%S")
    
    尝试一下
  • 时间算术

    您可以按时间执行简单的算术,如下所示:
    
    now = Time.now          # 当前时间
    puts now
    
    past = now - 10         # 10 秒之前. Time - number => Time
    puts past
    
    future = now + 10       # 10 秒之后. Time + number => Time
    puts future
    
    diff = future - past     # => 10  Time - Time => 未来十秒和过去十秒的时间差
    puts diff
    
    尝试一下
    更多内置函数,参考方法,请查阅参考手册。