我们可以使用Time类来生成一个当前时间的对象:
t = Time.new
或
t = Time.now
Time类有类方法mktime(同义方法是local方法)来根据传入的参数生成时间对象,并且它使用的是当前的时区:
t1 = Time.mktime(2001) # January 1, 2001 at 0:00:00
t2 = Time.mktime(2001,3)
t3 = Time.mktime(2001,3,15)
t4 = Time.mktime(2001,3,15,21)
t5 = Time.mktime(2001,3,15,21,30)
t6 = Time.mktime(2001,3,15,21,30,15) # March 15, 2001 9:30:15 pm
Time.gm(同义方法是Time.utc)方法基本上和上面的mktime用法相同,但它使用的是GMT或UTC时区
t8 = Time.gm(2001,3,15,21,30,15)
t9 = Time.utc(2001,3,15,21,30,15)
生成的时间对象有一个to_a方法,可以把时间相关一信息转化成一个数组,数组中存放的信息格式如下:
seconds,
minutes,
hours,
day,
month,
year,
day of week (0..6),
day of year (1..366),
daylight saving (true or false),
and time zone (as a string)
因此,我们也可以这么用:
t0 = Time.local(0,15,3,20,11,1979,2,324,false,"GMT-8:00")
t1 = Time.gm(*Time.now.to_a)
使用秒数来创建日期:
====================================================
在内部,日期存储为一个整数,代表从1970年开始到当前的秒数,我们可以获取这么秒数或则利用这个秒数来创建日期:
epoch = Time.at(0) # Find the epoch (1 Jan 1970 GMT)
newmil = Time.at(978307200) # Happy New Millennium! (1 Jan 2001)
now = Time.now # 16 Nov 2000 17:24:28
sec = now.to_i # 974424268
日期的格式化
====================================================
获取本日是星期几:
now = Time.now + 1
day_num = now.wday #3
day_abbr = now.strftime("%a") #Wed
day_full = now.strftime("%A") #Wednesday
获取一年中本日所在的周:
t1 = Time.local(2002,5,1)
1 = Date.new(2002,5,1)
week1a = t1.strftime("%U").to_i # 17
week1b = t1.strftime("%W").to_i # 17
week1c = d1.cweek # 18
获取当前时区:
z1 = Time.gm(2000,11,10,22,5,0).zone # "UTC"
z2 = Time.local(2000,11,10,22,5,0).zone # "中国标准时间"
格式化时间
====================================================
t = Time.now
puts t.strftime("%H:%M:%S") # 22:07:45
puts t.strftime("%H:%M") # 22:07
puts (t + 30).strftime("%H:%M") # 22:08 (加了30秒)
puts t.strftime("%I:%M %p") # 10:07 PM
所有strftime方法中可用的格式化符号:
=====================================================
%a 星期的缩写,如Wed
%A 星期的全称,如Wednesday
%U 本星期在全年中所属的周数
%W
%H 小时(24小时制)
%M 分钟
%S 秒
%I 小时(12小时制)
%p PM 或 AM
%b 月份的缩写,如 Jan
%B 月份的全称,如 January
%c 本地日期和时间,如 06/14/07 16:43:49
%d 日期 (1..31)
%j 本日在一年中所属的天 (1..366)
%m 月份 (1..12)
%w 星期的数字形式 (0..6)
%x 本地日期,如 06/14/07
%Y 本地时间,如 16:43:49
%y 2位的年份表示,如07
%Y 4位的年份表示,如2007
%Z 时区名,如"中国标准时间"
%% 字面符号%
分享到:
相关推荐
Time 类在 Ruby 中用于表示日期和时间。它是基于操作系统提供的系统日期和时间之上。该类可能无法表示 1970 年之前或者 2038 年之后的日期。 本教程将让您熟悉日期和时间的所有重要的概念。 创建当前的日期和时间 ...
Chronic一个纯Ruby编写的自然语言日期/时间解析器
yymmdd - Tiny DSL用于Ruby解析和格式化日期
validates_timeliness - ActiveModel和Rails的日期与时间验证插件,持多个ORM和允许自定义日期/时间格式。
获取当前日期和时间: 以下是一个简单的例子,以获得当前的日期和时间: #!/usr/bin/ruby -w time1 = Time.new puts Current Time : + time1.inspect # Time.now is a synonym: time2 = Time.now puts Current Time ...
local_time - Rails引擎向用户用当地时间格式来显示时间和日期
business_time - 支持基于办公的时间和天数来做时间数学计算
TZinfo - Ruby Timezone 库,实现了在不同时区之间变换时自动感知日夜保存
biz - 使用办公时间进行时间计算
time-lord - 为时间类添加一些扩展功能,让时间显示更易于人阅读
完全验证Rails 4.x和Rails 5.0的日期,时间和日期时间。 这是的叉子,带有和补丁。 我添加了与各种Rails 4.x版本以及STI和性能修复程序的其他兼容性。 特征 将日期,时间和日期时间的验证添加到ActiveModel 处理...
time_diff - 计算两个时间相差多少的Gem
此外,大多数不处理除时间格式外还使用美国日期格式的情况。 请注意,此 gem 仅处理/分隔日期。 它不处理 - 或 . 分开的日期。 这是设计使然,与 ruby 1.8.7 兼容。设计 总体思路相当简单。 我们在输入字符串中...
groupdate - 提供最简单的方式按时间分组数据
让我们将其作为Ruby最强大的资源 :purple_heart:命令行工具配置CSS和样式资料验证数据可视化数据库驱动程序日期和时间调试工具DevOps工具分配文献资料下载器电子商务和在线支付电子邮件环境管理学文件上传功能翻转...
ice_cube-简单的时间表扩展gem install ice_cube ice_cube是一个ruby库,用于轻松处理重复的事件(时间表)。 该API是在之后以愉悦的Ruby语法建模的。 强大之处在于可以指定多个规则,并使ice_cube快速确定计划是在...
它只将值转换为基本的Ruby类型(整数,浮点数,日期和时间),而不处理大多数格式或更高级的功能。 它致力于以最小的RAM和CPU消耗快速处理大型工作表,并且从最早的版本开始就已经投入生产。 Xsv代表“ Excel ...