`
zarknight
  • 浏览: 147906 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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


 

分享到:
评论
1 楼 sinkzephyr 2009-01-17  
引用
%Y    本地时间,如 16:43:49

本地时间应该是%X

相关推荐

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

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

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

    `validates_timeliness` 是一个针对 Ruby on Rails(以及支持 ActiveModel 的其他 ORM)的插件,用于增强模型中日期和时间的验证功能。这个插件使得开发者能够更精细地控制日期和时间字段的验证规则,确保数据的准确...

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

    Ruby on Rails 是一个使用 Ruby 语言编写的开源 web 应用框架,它遵循 MVC(模型-视图-控制器)架构模式。...此外,对时间处理感兴趣的开发者可以进一步探索 `Time` 类,它是 Ruby 处理时间的另一个重要类。

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

    在处理日期和时间时,Ruby提供了多种内置库,如Date、Time以及ActiveSupport的TimeWithZone等。然而,对于某些特定需求,开发者可能会寻找更加轻量级和灵活的解决方案,这就是`yymmdd`项目的目的所在。 `yymmdd`是...

    11.5 时间日期the ruby way.rar

    "11.5 时间日期the ruby way"这个主题深入探讨了Ruby中处理时间日期的最佳实践和常见用法。让我们逐一了解这些知识点。 首先,`Time.now`是Ruby中获取当前时间的标准方法。它返回一个`Time`对象,表示自1970年1月1...

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

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

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

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

    Ruby-TZInfoRubyTimezone库

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

    ruby语言帮助文档(简体中文)

    7. **标准库和Gem**:Ruby的标准库提供了大量的内置模块和类,覆盖了网络、文件系统操作、日期时间处理等常见任务。此外,Ruby的生态中还有大量的开源库(Gem),通过`gem install`命令可以轻松安装和管理。 8. **...

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

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

    ruby解释性脚本语言中文文档

    Ruby的标准库非常丰富,包含了各种常用的模块和类,如文件I/O、网络通信、日期和时间处理等。这些内置工具使得开发者无需额外安装第三方库就可以解决许多常见问题。 Ruby还拥有一个活跃的社区和强大的生态系统,...

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

    总之,Ruby-biz是一个强大的工具,能够简化在业务环境中处理时间计算的复杂性,使开发者能够更专注于业务逻辑,而不是时间规则的细节。通过深入理解和使用biz库,你可以提升你的Ruby项目在时间管理方面的效率和准确...

    Ruby-icecube一个日期递归库允许轻松地创建递归规则和快速查询

    总之,Ruby-icecube是Ruby开发中处理日期和时间递归问题的利器,它通过简洁的API和强大的功能,大大提高了处理此类问题的效率。如果你的项目涉及到日期和时间的复杂逻辑,那么ice_cube是一个值得考虑的优秀选择。

    Ruby-twittercldrrbICU的Ruby实现

    这个库提供了诸如文本分词、语言识别、日期和时间格式化、数字和货币转换等功能,极大地简化了在Ruby应用中实现国际化的需求。 对于“twitter-cldr-rb-2ba6d4a”这个压缩包文件,我们可以推测这是该库的一个特定...

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

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

    Ruby API 帮助文档.zip

    6. **标准库**: Ruby的标准库是一系列预先打包的模块和类,提供各种通用功能,如文件操作、网络通信、日期和时间处理等。例如,`File`类用于处理文件和目录,`Net::HTTP`用于HTTP请求。 7. **Gem**: Gem是Ruby的包...

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

    `time-lord`是专门为Ruby的`Time`类添加了一些扩展功能,以方便开发者在处理时间时获得更加友好的输出。 `time-lord`的核心功能在于它提供了多种格式化选项,使得时间显示更加贴近人们的日常表达习惯。例如,它能够...

    Ruby中处理时间的一些基本操作

    在Ruby编程语言中,处理时间是一项常见的任务,而Ruby提供了强大的`Time`模块来支持这一需求。本篇文章将深入探讨如何使用Ruby中的`Time`模块进行时间的基本操作。 首先,获取当前日期和时间非常简单。你可以通过...

Global site tag (gtag.js) - Google Analytics