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. SQL---->mySQl查看和更改端口

    修改端口: 采用dmg方式安装的mysql,默认启动端口为3307,不是默认的3306.如果想改为3306,可以编辑 /Library/LaunchDaemons     /com.Oracle.os ...

  2. Oracle等待事件之等待事件详解

    一. 等待事件的相关知识:1.1 等待事件主要可以分为两类:即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件.1). 空闲等待事件指ORACLE正等待某种工作,在诊断和优化数据库的时候, ...

  3. 分区实践 A PRIMARY KEY must include all columns in the table's partitioning function

    MySQL :: MySQL 8.0 Reference Manual :: 23 Partitioning https://dev.mysql.com/doc/refman/8.0/en/parti ...

  4. In ZeroDB, the client is responsible for the database logic. Data encryption, decryption, and compression also happen client side. Therefore, the server never has any knowledge about the data, its str

    zerodb/index.rst at master · zerodb/zerodb https://github.com/zerodb/zerodb/blob/master/docs/source/ ...

  5. 爬虫之BeautifulSoup

    BeautifulSoup是一个模块,该模块用于接收一个HTML或XML字符串,然后将其进行格式化,之后便可以使用他提供的方法进行快速查找指定元素,从而使得在HTML或XML中查找指定元素变得简单. ...

  6. python 面向对象 公有属性 用在哪里

    公有属性也可以叫做静态字段 如果每个对象都有一个共同的值 , 应该把它设置为公有属性 公有属性使用场景,每个对象中保存相同的东西时,可以使用公有属性 类找公有属性 过程

  7. oracle基于3种方法的大数据量插入更新

    过程插入更新的3种方法: a.逐条检查插入或更新,同时执行插入或更新 b.逐条merge into(逐条是为了记录过程日志与错误信息) c.基于关联数组的检查插入.更新,通过forall批量sql执行 ...

  8. SVM引入拉格朗日乘子[转载]

    转自:https://zhidao.baidu.com/question/494249074914968332.html SVM使用拉格朗日乘子法更为高效地求解了优化问题. SVM将寻找具有最大几何间 ...

  9. WHCTF2017线上小记

    第四届XCTF开始,首战因素,加上团队刚加入了两个新人的原因,还是决定一块参与一下.水了3题.2个RE和1个MISC,照顾新人,写的比较啰嗦. [MISC] PY-PY-PY 下载题目之后是一个pyc ...

  10. Python:笔记(7)——yield关键字

    Python:笔记(7)——yield关键字 yield与生成器 所谓生成器是一个函数,它可以生成一个值的序列,以便在迭代中使用.函数使用yield关键字可以定义生成器对象. 一个例子 我们调用该函数 ...