最常用的情况:
t = Time.now
t.strftime "%Y%2m%2d-%2H%2M%2S"
=> "20120429-133448"
我们可以使用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 时区名,如"中国标准时间"
%% 字面符号%
参考:
http://hi.baidu.com/%BA%C3%BA%C3%BC%D3%BC%D3%D3%CD/blog/item/0b600402655a19044afb51f5.html
分享到:
相关推荐
文章总结了绝大部分Ruby中处理时间和日期的方法,很实用。
yymmdd - Tiny DSL用于Ruby解析和格式化日期
主要介绍了在Ruby中处理日期和时间的教程,包括时间的格式化等基本用法,需要的朋友可以参考下
Chronic一个纯Ruby编写的自然语言日期/时间解析器
validates_timeliness - ActiveModel和Rails的日期与时间验证插件,持多个ORM和允许自定义日期/时间格式。
local_time - Rails引擎向用户用当地时间格式来显示时间和日期
TZinfo - Ruby Timezone 库,实现了在不同时区之间变换时自动感知日夜保存
本书还包含对Ruby平台上丰富的API的详尽介绍,并用带有详尽注释的代码演示了Ruby进行文本处理、数字运算、集合、输入/输出、网络开发和并发编程的功能。 前言1 第1章导言1 1.1漫游RUBY2 1.2体验RUBY11 ...
获取当前日期和时间: 以下是一个简单的例子,以获得当前的日期和时间: #!/usr/bin/ruby -w time1 = Time.new puts Current Time : + time1.inspect # Time.now is a synonym: time2 = Time.now puts Current Time ...
business_time - 支持基于办公的时间和天数来做时间数学计算
处理应用程序的逻辑,让PubNub在不到100ms的时间内处理世界各地的数据发送和接收。取得金钥您将需要发布和订阅密钥来对您的应用进行身份验证。 从获取密钥。配置PubNub 使用RubyGems将PubNub集成到您的项目中: gem...
这是专门为构建的,能够处理具有某些时间逻辑的事件的服务器。 它已经发展成为能够支持 CRON 类型事件(每 X 天)和需要依赖的事件(10 分钟内执行 X)的架构。 Ruby-Quest 是许多流处理系统的合适替代品。 ##开始...
此外,大多数不处理除时间格式外还使用美国日期格式的情况。 请注意,此 gem 仅处理/分隔日期。 它不处理 - 或 . 分开的日期。 这是设计使然,与 ruby 1.8.7 兼容。设计 总体思路相当简单。 我们在输入字符串中...
biz - 使用办公时间进行时间计算
它只将值转换为基本的Ruby类型(整数,浮点数,日期和时间),而不处理大多数格式或更高级的功能。 它致力于以最小的RAM和CPU消耗快速处理大型工作表,并且从最早的版本开始就已经投入生产。 Xsv代表“ Excel ...
响应中的服务器和客户端执行时间 gruf当前有效地支持gRPC 1.10.x +。 gruf与Ruby 2.2-2.7兼容并经过测试。 gruf也不是特定于,并且可以在任何Ruby框架(例如或 )中使用。 入门 请参阅 ,以获取有关开始使用gruf的...
有很多工作并不适合用 Ruby and Rails,你最好使用其它的工具,比如,数据库在大数据处理上优势明显,R 语言特别适合做统计学相关的工作。 内存问题是导致诸多 Ruby 应用变慢的首要原因。Rails 性能优化的 8