`
贝特虫子
  • 浏览: 157893 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

ruby 时间处理(转)

    博客分类:
  • ruby
阅读更多
我们可以使用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
puts t。strftime("%Y-%m-%d %H:%M:%S") # 2009-11-20 10:00:20



所有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    时区名,如"中国标准时间"
%%    字面符号%

分享到:
评论

相关推荐

    Ruby中处理时间和日期

    Ruby 中处理时间和日期 Ruby 中处理时间和日期可以使用 Time 类来生成当前时间的对象。Time 类有类方法 mktime(同义方法是 local 方法)来根据传入的参数生成时间对象,并且它使用的是当前的时区。例如: t = ...

    ruby 阳历农历转换类

    总之,“ruby 阳历农历转换类”涉及到的编程技术包括日期和时间处理、农历和阳历的转换算法、异常处理以及面向对象编程。开发者需要对农历和阳历的天文知识有一定了解,才能编写出准确的转换代码。

    Ruby-ParallelRuby让并行处理简单和快速

    "Parallel Ruby"库正是为此目的而设计,它使得在Ruby中实现并行处理变得简单且高效。 Parallel Ruby库是一个强大的工具,允许开发者在Ruby程序中并行运行任务,从而显著提升性能。这个库的核心理念是将工作分解成可...

    Ruby-TZInfoRubyTimezone库

    通过以上内容,我们可以看到Ruby-TZInfoRubyTimezone库在日期和时间处理中的关键作用,它是开发跨时区应用的重要工具,能够帮助开发者避免由于时区和夏令时处理不当导致的错误。在实际项目中,正确使用TZInfo库可以...

    Ruby-Chronic一个纯Ruby编写的自然语言日期时间解析器

    Ruby-Chronic是一个专门为Ruby编程语言设计的自然...总的来说,Ruby-Chronic是一个强大的工具,它极大地提高了处理自然语言日期和时间的效率和用户体验。无论是小型项目还是大型应用,它都能成为开发者不可或缺的助手。

    Ruby-twittercldrrbICU的Ruby实现

    Ruby-twittercldrrb是基于ICU(International Components for Unicode)的一个Ruby库,主要用于处理国际化(i18n)和本地化(l10n)任务。这个库为Ruby开发者提供了一套强大的工具,用于在应用程序中实现多语言支持...

    Ruby-businesstime支持基于办公的时间和天数来做时间数学计算

    `business_time` 是一个Ruby库,专门用于处理这种基于办公的日历和时间计算,从而帮助开发者更准确地进行业务相关的时序运算。 `business_time` 库的核心功能包括: 1. **工作日计算**:在业务场景中,周末和节...

    ruby使用json库

    Ruby是一种强大的动态...总的来说,Ruby的JSON库提供了强大且直观的方式来处理JSON数据,无论是从服务器接收还是向客户端发送。理解其基本用法和高级特性,对于任何使用Ruby进行Web开发的程序员来说都是必不可少的。

    Ruby-Savon是一个Ruby编程语言的SOAP客户端

    Ruby-Savon是Ruby编程语言中的一个强大的SOAP(Simple Object Access Protocol)客户端库,它使得在Ruby中...无论你是新手还是经验丰富的开发者,Savon都能帮助你在处理SOAP服务时节省时间和精力,专注于你的业务逻辑。

    Ruby-biz使用办公时间进行时间计算

    "Ruby-biz"是一个专门为处理工作日和办公时间而设计的Ruby库,它可以帮助开发者更精确地计算工作日之间的差异、工作小时等,特别是在业务逻辑中涉及到时间计算时非常实用。 biz库的核心功能在于模拟工作日历,考虑...

    ruby语言帮助文当

    Ruby的标准库提供了大量预装模块和类,用于文件操作、网络通信、日期和时间处理等各种任务,是Ruby强大功能的基础。 2. `ruby20-core.chm`:可能是关于Ruby 2.0核心库的文档,核心库包含了语言的基本结构和功能,如...

    Ruby-Stringex一些实用的Ruby字符串扩展类

    2. **日期和时间解析**:通过`to_date`和`to_time`方法,你可以轻松地将字符串解析成日期或时间对象,这对于处理用户输入的日期和时间数据非常有用。 3. **Unicode转换**:Stringex包含了一些处理Unicode字符的方法...

    ruby官方chm文档

    其中包括文件操作、网络通信、XML解析、日期和时间处理、数学运算等功能。例如,`File`类用于处理文件和目录,`Net::HTTP`用于HTTP通信,`JSON`模块则用于解析和生成JSON格式的数据。通过这个文档,你可以了解到每个...

    Ruby-validatestimelinessActiveModel和Rails的日期与时间验证插件

    在Rails中,ActiveRecord默认提供了多种验证方法,如`validates_length_of`、`validates_numericality_of`等,但这些方法对日期和时间的处理并不全面。`validates_timeliness` 插件则填补了这一空白,它支持以下功能...

    Working with Ruby Threads

    - **Puma的线程池实现**:Puma是一个高性能的Ruby Web服务器,它使用了一个简单的线程池实现来处理并发请求。通过分析其实现细节,可以更好地理解如何在实际项目中应用线程池。 #### 结语 通过深入学习《Working ...

    Ruby新手学习书(Ruby语言中文教程)和Rails_4_days

    通过这些资源,初学者可以在短时间内建立起对Ruby语言和Rails框架的基本理解,并逐步进阶到更复杂的开发任务。记得理论学习与实践相结合,不断编写代码和调试,是提升技能的最好方式。祝你在Ruby的世界里探索愉快!

    在Ruby中处理日期和时间的教程

    Ruby通过其标准库中的Time类为开发者提供了丰富的日期和时间处理功能。本教程将详细介绍在Ruby中如何处理日期和时间,包括创建日期时间对象、获取日期时间的各个组成部分、使用不同的时间函数、处理时区和夏令时以及...

    Ruby-timelord为时间类添加一些扩展功能

    在Ruby中,日期和时间的处理是非常常见的任务,而标准库中的`Time`类提供了很多基础操作。然而,有时候我们可能需要更加人性化的日期和时间显示方式,这就引出了`time-lord`这个库。`time-lord`是专门为Ruby的`Time`...

    ruby1.8.6-26

    然而,随着时间的推移,Ruby已经发展到了更高的版本,例如Ruby 2.x和3.x系列,这些新版本带来了更多的性能提升、语言改进和安全修复。Ruby 1.8.6不再被官方支持,可能存在已知的安全漏洞和性能问题。因此,除非有...

    11.5 时间日期the ruby way.rar

    在Ruby编程语言中,时间日期处理是至关重要的,特别是在开发涉及日志记录、事件调度或数据分析的应用程序时。"11.5 时间日期the ruby way"这个主题深入探讨了Ruby中处理时间日期的最佳实践和常见用法。让我们逐一...

Global site tag (gtag.js) - Google Analytics