Ruby 日期 & 时间(Date & Time)

  Time 类在 Ruby 中用于表示日期和时间。它是基于操作系统提供的系统日期和时间之上。该类可能无法表示 1970 年之前或者 2038 年之后的日期。

  本教程将让您熟悉日期和时间的所有重要的概念。

  创建当前的日期和时间

  下面是获取当前的日期和时间的简单实例:

  #!/usr/bin/ruby -w

  time1 = Time.new

  puts "Current Time : " + time1.inspect

  # Time.now 是一个同义词

  time2 = Time.now

  puts "Current Time : " + time2.inspect

  这将产生以下结果:

  Current Time : Mon Jun 02 12:02:39 -0700 2008

  Current Time : Mon Jun 02 12:02:39 -0700 2008

  获取 Date & Time 组件

  我们可以使用 Time 对象来获取各种日期和时间的组件。请看下面的实例:

  #!/usr/bin/ruby -w

  time = Time.new

  # Time 的组件

  puts "Current Time : " + time.inspect

  puts time.year # => 日期的年份

  puts time.month # => 日期的月份(1 到 12)

  puts time.day # => 一个月中的第几天(1 到 31)

  puts time.wday # => 一周中的星期几(0 是星期日)

  puts time.yday # => 365:一年中的第几天

  puts time.hour # => 23:24 小时制

  puts time.min # => 59

  puts time.sec # => 59

  puts time.usec # => 999999:微秒

  puts time.zone # => "UTC":时区名称

  这将产生以下结果:

  Current Time : Mon Jun 02 12:03:08 -0700 2008

  2008

  6

  2

  1

  154

  12

  3

  8

  247476

  UTC

  Time.utc、Time.gm 和 Time.local 函数

  这些函数可用于格式化标准格式的日期,如下所示:

  # July 8, 2008

  Time.local(2008, 7, 8)

  # July 8, 2008, 09:10am,本地时间

  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 (与 UTC 相同)

  Time.gm(2008, 7, 8, 9, 10, 11)

  下面的实例在数组中获取所有的组件:

  [sec,min,hour,day,month,year,wday,yday,isdst,zone]

  尝试下面的实例:

  #!/usr/bin/ruby -w

  time = Time.new

  values = time.to_a

  p values

  这将产生以下结果:

  [26, 10, 12, 2, 6, 2008, 1, 154, false, "MST"]

  该数组可被传到 Time.utc 或 Time.local 函数来获取日期的不同格式,如下所示:

  #!/usr/bin/ruby -w

  time = Time.new

  values = time.to_a

  puts Time.utc(*values)

  这将产生以下结果:

  Mon Jun 02 12:15:36 UTC 2008

  下面是获取时间的方式,从纪元以来的秒数(平台相关):

  # 返回从纪元以来的秒数

  time = Time.now.to_i

  # 把秒数转换为 Time 对象

  Time.at(time)

  # 返回从纪元以来的秒数,包含微妙

  time = Time.now.to_f

  时区和夏令时

  您可以使用 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:如果在 UTC 时区

  time.localtime # 转换为本地时区

  time.gmtime # 转换回 UTC

  time.getlocal # 返回本地区中的一个新的 Time 对象

  time.getutc # 返回 UTC 中的一个新的 Time 对象

  格式化时间和日期

  有多种方式格式化日期和时间。下面的实例演示了其中一部分:

  #!/usr/bin/ruby -w

  time = Time.new

  puts time.to_s

  puts time.ctime

  puts time.localtime

  puts time.strftime("%Y-%m-%d %H:%M:%S")

  这将产生以下结果:

  Mon Jun 02 12:35:19 -0700 2008

  Mon Jun 2 12:35:19 2008

  Mon Jun 02 12:35:19 -0700 2008

  2008-06-02 12:35:19

  时间格式化指令

  下表所列出的指令与方法 Time.strftime 一起使用。

  指令描述

  %a星期几名称的缩写(比如 Sun)。

  %A星期几名称的全称(比如 Sunday)。

  %b月份名称的缩写(比如 Jan)。

  %B月份名称的全称(比如 January)。

  %c优选的本地日期和时间表示法。

  %d一个月中的第几天(01 到 31)。

  %H一天中的第几小时,24 小时制(00 到 23)。

  %I一天中的第几小时,12 小时制(01 到 12)。

  %j一年中的第几天(001 到 366)。

  %m一年中的第几月(01 到 12)。

  %M小时中的第几分钟(00 到 59)。

  %p子午线指示(AM 或 PM)。

  %S分钟中的第几秒(00 或 60)。

  %U当前年中的周数,从第一个星期日(作为第一周的第一天)开始(00 到 53)。

  %W当前年中的周数,从第一个星期一(作为第一周的第一天)开始(00 到 53)。

  %w一星期中的第几天(Sunday 是 0,0 到 6)。

  %x只有日期没有时间的优先表示法。

  %X只有时间没有日期的优先表示法。

  %y不带世纪的年份表示(00 到 99)。

  %Y带有世纪的年份。

  %Z时区名称。

  %%% 字符。

  时间算法

  您可以用时间做一些简单的算术,如下所示:

  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 - now # => 10 Time - Time => 秒数

  puts diff

  这将产生以下结果:

  Thu Aug 01 20:57:05 -0700 2013

  Thu Aug 01 20:56:55 -0700 2013

  Thu Aug 01 20:57:15 -0700 2013

  10.0(编辑:雷林鹏 来源:网络)

雷林鹏分享:Ruby 日期 & 时间(Date & Time)的更多相关文章

  1. 雷林鹏分享:Ruby 循环

    Ruby 循环 Ruby 中的循环用于执行相同的代码块若干次.本章节将详细介绍 Ruby 支持的所有循环语句. Ruby while 语句 语法 while conditional [do] code ...

  2. Java 日期时间 Date类型,long类型,String类型表现形式的转换

    Java 日期时间 Date类型,long类型,String类型表现形式的转换 1.java.util.Date类型转换成long类型 java.util.Date dt = new Date(); ...

  3. Java 日期时间 Date类型,long类型,String类型表现形式的转换 (转)

    Java 日期时间 Date类型,long类型,String类型表现形式的转换 1.java.util.Date类型转换成long类型java.util.Date dt = new Date();Sy ...

  4. 雷林鹏分享:Ruby 文件的输入与输出

    Ruby 文件的输入与输出 Ruby 提供了一整套 I/O 相关的方法,在内核(Kernel)模块中实现.所有的 I/O 方法派生自 IO 类. 类 IO 提供了所有基础的方法,比如 read. wr ...

  5. 雷林鹏分享:Ruby File 类和方法

    Ruby File 类和方法 File 表示一个连接到普通文件的 stdio 对象.open 为普通文件返回该类的一个实例. 类方法 序号方法 & 描述 1File::atime( path) ...

  6. 雷林鹏分享:Ruby CGI方法

    Ruby CGI方法 以下为CGI类的方法列表: 序号方法描述 1CGI::new([ level="query"]) 创建 CGI 对象.query可以是以下值: query: ...

  7. 雷林鹏分享:Ruby CGI 编程

    Ruby CGI 编程 Ruby 是一门通用的语言,不仅仅是一门应用于WEB开发的语言,但 Ruby 在WEB应用及WEB工具中的开发是最常见的. 使用Ruby您不仅可以编写自己的SMTP服务器,FT ...

  8. 雷林鹏分享:Ruby Socket 编程

    Ruby Socket 编程 Ruby提供了两个级别访问网络的服务,在底层你可以访问操作系统,它可以让你实现客户端和服务器为面向连接和无连接协议的基本套接字支持. Ruby 统一支持应用程的网络协议, ...

  9. 雷林鹏分享:Ruby 多线程

    Ruby 多线程 每个正在系统上运行的程序都是一个进程.每个进程包含一到多个线程. 线程是程序中一个单一的顺序控制流程,在单个程序中同时运行多个线程完成不同的工作,称为多线程. Ruby 中我们可以通 ...

随机推荐

  1. postgresql----数据库表约束----UNIQUE

    四.UNIQUE ---- 唯一约束 唯一键可以是单个字段,也可以是多个字段的组合,设置唯一约束后,INSERT或UPDATE时如果表中唯一键字段中已存在该数据,则拒绝该行数据的INSERT或UPDA ...

  2. 170613、Spring整合RabbitMQ实例

    一.rabbitMQ简介 1.1.rabbitMQ的优点(适用范围)1. 基于erlang语言开发具有高可用高并发的优点,适合集群服务器.2. 健壮.稳定.易用.跨平台.支持多种语言.文档齐全.3. ...

  3. drop user ora-604 ora-54

    SQL> drop user EFMIS_87_LK cascade;drop user EFMIS_87_LK cascade*ERROR at line 1:ORA-00604: error ...

  4. scrapy爬虫系列之七--scrapy_redis的使用

    功能点:如何发送携带cookie访问登录后的页面,如何发送post请求登录 简单介绍: 安装:pip3 install scrapy_redis 在scrapy的基础上实现了更多的功能:如reques ...

  5. Drawing Graphs using Dot and Graphviz

    Drawing Graphs using Dot and Graphviz Table of Contents 1. License 2. Introduction 2.1. What is DOT? ...

  6. 【Jenkins学习 】解决jenkins运行磁盘满的问题

    一.背景 今天有同事编译Jenkins的相关Jobs的时候,出现了编译成功,但是输出产物失败的情况,如下图所示: Caused by:java.io.IOException: No space lef ...

  7. Visual Studio 2017企业版 Enterprise 注册码 专业版Professional 激活码key

    Visual Studio 2017(VS2017) 企业版 Enterprise 注册码:NJVYC-BMHX2-G77MM-4XJMR-6Q8QFVisual Studio 2017(VS2017 ...

  8. PAT 1060 Are They Equal[难][科学记数法]

    1060 Are They Equal(25 分) If a machine can save only 3 significant digits, the float numbers 12300 a ...

  9. CCPC-Wannafly Winter Camp Day1 (Div2, onsite)

    Replay Dup4: 要是不挂机,再多仔细想想就好了 J确实自闭好久,一直在想正确性,最后数据错了,喵喵喵? 还是要保证充足的休息啊,中间睡了一小会儿,也不知道睡了多久,醒来他们就又过了一道 要发 ...

  10. Java backup

    待补充 ........ 0:常用头文件(待补充) import java.util.Arrays; import java.util.HashSet; import java.util.TreeSe ...