`

ruby 时间日期处理

阅读更多
1.当前时间
   Time.new 或Time.now
2.Time类的方法mktime(同义方法是local方法)来根据传入的参数生成时间对象,并且它使用的是当前的时间
   t1 = Time.mktime(2001)   => Mon Jan 01 00:00:00 +0800 2001
   t2 = Time.mktime(2001,3) => Thu Mar 01 00:00:00 +0800 2001
   t3 = Time.mktime(2001,3,15) => Thu Mar 15 00:00:00 +0800 2001
   t4 = Time.mktime(2001,3,15,21) => Thu Mar 15 21:00:00 +0800 2001
   t5 = Time.mktime(2001,3,15,21,30) => Thu Mar 15 21:30:00 +0800 2001
   t6 = Time.mktime(2001,3,15,21,30,15) => Thu Mar 15 21:30:15 +0800 2001

3.Time.gm(同义方法是Time.utc)方法基本上和上面的mktime用法相同,但它使用的是GMT或  UTC时区
   t8 = Time.gm(2001,3,15,21,30,15)  => Thu Mar 15 21:30:15 UTC 2001
   t9 = Time.utc(2001,3,15,21,30,15) => Thu Mar 15 21:30:15 UTC 2001

4.Time对象的to_a方法
生成的时间对象有一个to_a方法,可以把时间相关一信息转化成一个数组。
t9.to_a => [15, 30, 21, 15, 3, 2001, 4, 74, false, "UTC"]

数组中存放的信息格式如下:
   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)
5.使用秒数来创建日期
   在内部,日期存储为一个整数,代表从1970年开始到当前的秒数,我们可以获取这么秒数或则利用这个秒数来创建日期:
    epoch = Time.at(0) # Find the epoch (Thu Jan 01 08:00:00 +0800 1970)
    newmil = Time.at(978307200) # Happy New Millennium! (Mon Jan 01 08:00:00 +0800 2001)
    now = Time.now # Sat Mar 05 16:25:00 +0800 2011
    sec = now.to_i # 1299313500


6.格式化时间
time.strftime( string ) => string
   t = Time.now => Sat Mar 05 16:36:18 +0800 2011
   t.strftime("%Y/%m/%d %H:%M") => "2011/03/05 16:36"
   t.strftime("%Y/%m/%d") => "2011/03/05"

   所有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    时区名,如"中国标准时间"
      %%    字面符号%
7.Time对象的常用方法
    t = Time.now
    t= Time.now=> Sat Mar 05 16:57:35 +0800 2011
    t.year=> 2011#年
    t.month => 3#月
    t.day  => 5#日
    t.hour  => 16#小时
    t.min  => 57#分钟
    t.sec => 35#秒
    t.wday => 6#表示星期六,星期天为0
    t.yday => 64#一年的第几天

    还有to_a, to_i,to_s ....更多参考http://ruby-doc.org/core/
8.rails日期和时间的扩展
   now = Time.now => Sat Mar 05 17:09:55 +0800 2011
   now.to_date => Sat, 05 Mar 2011
   now.to_s => "Sat Mar 05 17:09:55 +0800 2011"
   now.to_s(:short) => "05 Mar 17:09"
   now.to_s(:long) => "March 05, 2011 17:09"
   now.to_s(:db) => "2011-03-05 17:09:55"
   now.to_s(:rfc822) => "Sat, 05 Mar 2011 17:09:55 +0800"
   now.at_beginning_of_day => Sat Mar 05 00:00:00 +0800 2011
   now.at_beginning_of_month => Tue Mar 01 00:00:00 +0800 2011
   now.at_beginning_of_week => Mon Feb 28 00:00:00 +0800 2011
   now.at_beginning_of_quarter => Sat Jan 01 00:00:00 +0800 2011
   now.at_beginning_of_year => Sat Jan 01 00:00:00 +0800 2011
   now.at_midnight => Sat Mar 05 00:00:00 +0800 2011
   now.change(:hour => 13) => Sat Mar 05 13:00:00 +0800 2011
   now.last_month => Sat Feb 05 17:09:55 +0800 2011
   now.last_year => Fri Mar 05 17:09:55 +0800 2010
   now.midnight => Sat Mar 05 00:00:00 +0800 2011
   now.monday => Mon Feb 28 00:00:00 +0800 2011
   now.months_ago(2) => Wed Jan 05 17:09:55 +0800 2011
   now.months_ago(1) => Sat Feb 05 17:09:55 +0800 2011
   now.months_ago(3) => Sun Dec 05 17:09:55 +0800 2010
   now.months_since(2) => Thu May 05 17:09:55 +0800 2011
   now.next_week => Mon Mar 07 00:00:00 +0800 2011
   now.next_year => Mon Mar 05 17:09:55 +0800 2012
   now.seconds_since_midnight => 61795.249
   now.since(7200) => Sat Mar 05 19:09:55 +0800 2011
   now.tomorrow => Sun Mar 06 17:09:55 +0800 2011
   now.years_ago(2) => Thu Mar 05 17:09:55 +0800 2009
   now.years_since(2) => Tue Mar 05 17:09:55 +0800 2013
   now.yesterday=> Fri Mar 04 17:09:55 +0800 2011
   now.advance(:days => 30) => Mon Apr 04 17:09:55 +0800 2011
   Time.days_in_month(2)  => 28
   Time.days_in_month(2,2000) => 29

  这些只是其中的一部分,如果想知道更多的函数可以参看rails api。你还可以参考下面这篇文章http://blog.zool.it/posts/rails-in-the-method-of-operation-of-time,他最后提到的by_star这个插件是用来做时间搜索的,我之前也用过,你可以去用下。













分享到:
评论

相关推荐

    Ruby中处理时间和日期

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

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

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

    11.5 时间日期the ruby way.rar

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

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

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

    rubyonrails+Ruby+取得指定月日期数方法

    在上述内容中,还有一些参考资料链接,指向了其他解释 Ruby 日期处理方法的资源。这些链接可能提供了额外的实现方式或者相关知识拓展,但在此我们主要关注上述的代码实现方法。 总结来说,在 Ruby on Rails 中,...

    Ruby-yymmddTinyDSL用于Ruby解析和格式化日期

    Ruby是一种强大的动态编程语言,广泛应用于Web开发和脚本编写。在处理日期和时间时,Ruby提供了多种内置库,如Date、Time以及...通过结合Ruby的标准日期库和其他工具,你可以构建出强大而灵活的日期处理系统。

    Ruby-TZInfoRubyTimezone库

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

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

    本教程将详细介绍在Ruby中如何处理日期和时间,包括创建日期时间对象、获取日期时间的各个组成部分、使用不同的时间函数、处理时区和夏令时以及日期时间的格式化方法。 首先,要创建当前的日期和时间对象,可以使用...

    Ruby-localtimeRails引擎向用户用当地时间格式来显示时间和日期

    在Ruby on Rails开发中,时间与日期的展示是常见的需求,尤其当涉及到用户交互时,为...在实际项目中,结合其他前端库如 Moment.js 或者 Luxon,还能进一步增强时间日期的处理能力,提供更丰富的格式化选项和交互体验。

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

    在处理日期和时间相关的任务时,Ruby提供了多种库和工具。"Ruby-biz"是一个专门为处理工作日和办公时间而设计的Ruby库,它可以帮助开发者更精确地计算工作日之间的差异、工作小时等,特别是在业务逻辑中涉及到时间...

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

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

    Ruby-twittercldrrbICU的Ruby实现

    它包含了各种数据,如日期/时间格式、数字格式、货币格式、排序规则、拼写检查等,以及用于处理这些任务的API。ICU在许多语言环境中都是标准的本地化工具,包括Java、C++和.NET等。 Ruby-twittercldrrb库将ICU的...

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

    Ruby是一种面向对象的编程语言,以其简洁和优雅的语法著称。在Ruby中,日期和时间的处理是非常常见的任务,而标准库中的...通过熟练掌握和运用这个库,你的Ruby项目将在时间和日期处理方面展现出更高的效率和用户体验。

    ruby语言帮助文当

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

    Ruby-timediff计算两个时间相差多少的Gem

    在处理日期和时间时,Ruby提供了内置的Date、Time以及DateTime类,这些类可以帮助我们进行基本的时间操作。然而,有时我们需要更复杂的计算,比如计算两个时间点之间的差值,这时可以借助第三方Gem库来实现,比如...

    ruby官方chm文档

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

    ruby.rar

    Ruby还拥有丰富的标准库,包括文件操作、网络通信、日期和时间处理等,这些都通过简单的API供开发者使用。此外,Ruby的错误处理机制采用异常处理,通过`begin-rescue-end`块来捕获和处理运行时可能出现的问题。 接...

    Ruby-Logging一个用在Ruby程序中灵活日志库

    例如,你可能希望在每个日志条目前添加日期和时间,以及产生日志的代码行号。 在实际应用中,Ruby-Logging库还提供了过滤器功能,这使得你可以根据特定条件决定是否记录日志。比如,你可以设置一个过滤器,只记录...

    ruby使用json库

    3. **处理日期和时间**: 默认情况下,Ruby的JSON库不会自动处理Date或Time对象,它们会被转换为字符串。如果你想保持日期和时间的原始类型,可以自定义JSON生成器,或者使用`as_json`方法来定义如何转换这些对象。...

Global site tag (gtag.js) - Google Analytics