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

Rails 日期扩展

阅读更多
引用
now = Time.now

puts now   #=>   Thu May 18 23:36:10 CDT 2006

puts now.to_date   #=>   2006-05-18

puts now.to_s   #=>   Thu May 18 23:36:10 CDT 2006

puts now.to_s(:short)   #=>   18 May 23:36

puts now.to_s(:long)   #=>   May 18, 2006 23:36

puts now.to_s(:db)   #=>   2006-05-18 23:36:10

puts now.to_s(:rfc822)   #=> Thu, 18 May 2006 23:36:10 -0500

puts now.ago(3600)   #=> Thu May 18 22:36:10 CDT 2006

puts now.at_beginning_of_day   #=> Thu May 18 00:00:00 CDT 2006

puts now.at_beginning_of_month   #=> Mon May 01 00:00:00 CDT 2006

puts now.at_beginning_of_week   #=> Mon May 15 00:00:00 CDT 2006

puts now.at_beginning_of_quarter   #=> Sat Apr 01 00:00:00 CST 2006

puts now.at_beginning_of_year   #=> Sun Jan 01 00:00:00 CST 2006

puts now.at_midnight   #=> Thu May 18 00:00:00 CDT 2006

puts now.change(:hour => 13)   #=> Thu May 18 13:00:00 CDT 2006

puts now.last_month   #=> Tue Apr 18 23:36:10 CDT 2006

puts now.last_year   #=> Wed May 18 23:36:10 CDT 2005

puts now.midnight   #=> Thu May 18 00:00:00 CDT 2006

puts now.monday   #=> Mon May 15 00:00:00 CDT 2006

puts now.months_ago(2)   #=> Sat Mar 18 23:36:10 CST 2006

puts now.months_since(2)   #=> Tue Jul 18 23:36:10 CDT 2006

puts now.next_week   #=> Mon May 22 00:00:00 CDT 2006

puts now.next_year   #=> Fri May 18 23:36:10 CDT 2007

puts now.seconds_since_midnight   #=> 84970.423472

puts now.since(7200)   #=> Fri May 19 01:36:10 CDT 2006

puts now.tomorrow   #=> Fri May 19 23:36:10 CDT 2006

puts now.years_ago(2)   #=> Tue May 18 23:36:10 CDT 2004

puts now.years_since(2)   #=> Sun May 18 23:36:10 CDT 2008

puts now.yesterday   #=> Wed May 17 23:36:10 CDT 2006

puts now.advance(:days => 30)   #=> Sat Jun 17 23:36:10 CDT 2006

puts Time.days_in_month(2)   #=> 28

puts Time.days_in_month(2, 2000)   #=> 29

puts now.xmlschema   #=> "2006-05-18T23:36:10-06:00"


Rail 2.1 支持时区。可以在
引用
config/environment.rb
中设置默认时区:
config.time_zone = 'UTC'

在 action 中,你可以覆盖默认时区,并把时间转换到指定时区。
Time.zone = 'Eastern Time (US & Canada)'
puts Time.now.in_time_zone

Rails 2.2 引入了 past?、today?和 future? 三个方法用来判断给定时间是在当前时间之前、
和现在是同一天还是在当前时间之后

Date 对象也增加了几个有用的方法。
引用
date = Date.today

puts date.tomorrow #=> "Fri, 19 May 2006"

puts date.yesterday #=> "Wed, 17 May 2006"

puts date.current #=> "Thu, 18 May 2006"




如果设置了 config.time_zone,current()返回 Time.zone.today,
否则返回 Date.today:

puts date.to_s   #=>   "2006-05-18"

puts date.xmlschema   #=>   "2006-05-18T00:00:00-06:00"

puts date.to_time   #=>   Thu May 18 00:00:00 CDT 2006

puts date.to_s(:short)   #=>   "18 May"

puts date.to_s(:long)   #=>   "May 18, 2006"

puts date.to_s(:db)   #=>   "2006-05-18"



你还可以扩展日期对象的 to_s 方法,
将上述格式化逻辑封装起来。
只要在
引用
environment.rb

文件中加上下列代码:
ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.merge!(
:chatty => "It's %I:%M%p on %A, %B %d, %Y"
)

现在你就可以这样编写代码:
any_date.to_s(:ordinal)   #=> "2006-149"

同样,也可以扩展 Time 类的格式化逻辑。
ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.merge!(
:chatty => "It's %I:%M%p on %A, %B %d, %Y"
)

Time.now.to_s(:chatty) #=> "It's 12:49PM on Monday, May 29, 2006"

String 类还有两个与时间相关的方法: to_time()和 to_date()方法分别返回 Time 对象和
Date 对象。
puts "2006-12-25 12:34:56".to_time   #=> Mon Dec 25 12:34:56 UTC 2006

puts "2006-12-25 12:34:56".to_date   #=> 2006-12-25


rails 时间格式化参数
  %a - The abbreviated weekday name (``Sun'')

  %A - The  full  weekday  name (``Sunday'')

  %b - The abbreviated month name (``Jan'')

  %B - The  full  month  name (``January'')

  %c - The preferred local date and time representation

  %d - Day of the month (01..31)

  %H - Hour of the day, 24-hour clock (00..23)

  %I - Hour of the day, 12-hour clock (01..12)

  %j - Day of the year (001..366)

  %m - Month of the year (01..12)

  %M - Minute of the hour (00..59)

  %p - Meridian indicator (``AM''  or  ``PM'')

  %S - Second of the minute (00..60)

  %U - Week  number  of the current year,starting with the first Sunday as the first day of the first week (00..53)

  %W - Week  number  of the current year,starting with the first Monday as the first day of the first week (00..53)

  %w - Day of the week (Sunday is 0, 0..6)

  %x - Preferred representation for the date alone, no time

  %X - Preferred representation for the time alone, no date

  %y - Year without a century (00..99)

  %Y - Year with century

  %Z - Time zone name

  %% - Literal ``%'' character

   t = Time.now
   t.strftime("Printed on %m/%d/%Y")   #=> "Printed on 04/09/2003"
   t.strftime("at %I:%M%p")            #=> "at 08:56AM"
分享到:
评论
2 楼 ddl1st 2011-04-27  
夜鸣猪 写道
还不错,我经常用到的是

格式化显示通常是 datatime 或者timestamp到ctf string

或者是一个格式化的time string 转换成Date或者Time



呵呵,我就是看了经常忘记。
1 楼 夜鸣猪 2011-04-27  
还不错,我经常用到的是

格式化显示通常是 datatime 或者timestamp到ctf string

或者是一个格式化的time string 转换成Date或者Time

相关推荐

    validates_timeliness:ActiveModel和Rails的日期和时间验证插件。 支持多个ORM,并允许自定义日期时间格式

    仅提供完整验证的Rails日期/时间验证插件(请参阅ORM / ODM支持) 使用可扩展的日期/时间解析器(使用 。请参阅插件解析器) 支持I18n的错误消息 支持Ruby 2.0+ 安装 # in Gemfile gem 'ae-validates_timeliness' ...

    rails-javascript-integrations, JavaScript重 Rails 应用的渐进集成策略.zip

    rails-javascript-integrations, JavaScript重 Rails 应用的渐进集成策略 Rails JavaScript集成策略注意:这比最后一个提交日期更新更新,因为大多数有趣的工作不在 master 分支上。为什么?模块化视图使用户界面的...

    Web开发敏捷之道-应用Rails进行敏捷Web开发-第三版.rar

    16.6 时间和日期的扩展 208 16.7 Ruby符号的扩展 210 16.8 with_options 211 16.9 Unicode支持 211 第17章 数据迁移 215 17.1 创建和运行迁移任务 216 17.2 剖析迁移任务 218 17.3 表的管理 221 17.4 数据迁移任务 ...

    SwiftDateTimeExtensions:Swift 中 Rails 风格的日期时间算法

    Swift 中 Rails 风格的日期/时间算法承认吧,你一直嫉妒你的 Rails 开发者朋友能够写出漂亮的、可读的日期操作,如下所示: some_future_date = 4 . months . from_nowthe_past = ( 2 . days + 3 . years ) . ago 好...

    成长:Ruby on Rails的可持续架构

    该项目旨在使新的和现有的Rails应用程序都更容易采用经过实践证明的模式,这些模式可使代码在长期内更具可持续性,并且代码库更易于维护和扩展。 我们将推荐一组简单但实用的抽象和实践,这些抽象和实践可在Rails

    upgrow:[镜像] Ruby on Rails的可持续架构

    该项目旨在使新的和现有的Rails应用程序都更容易采用经过验证的模式,这种模式可以使代码长期更可持续地发展,并且代码库更易于维护和扩展。 我们将推荐一组简单但实用的抽象和实践,这些抽象和实践可在Rails应用程

    Private-Events:用户可以创建事件并发送邀请和聚会。 活动在特定的日期和地点发生

    用户可以创建事件并发送邀请和聚会。 活动在特定的日期和位置发生。 :pen: :bug: :folded_hands:高级表格和活动记录项目:协会用户可以创建事件...RVM vscode使用Ruby和Rubocop扩展Linux 爱与激情的代码。 作者Aheebwa

    week-of-month:给出给定日期的一个月的一周

    每月的星期是一个用有用的方法扩展Date和Time类的瑰宝。 在以日历安排的形式准确显示星期几的同时,该gem还为您提供识别特定日期位于星期几的工具。 入门 一个月的一周以Ruby Gem的形式发布。 该gem将安装在Ruby on...

    eztime:简单、人性化的 Ruby 时间格式化插件(Rails 插件)

    时间安装脚本/插件安装 git@github.com:scharfie/eztime.git EZTime 是 Ruby 中 Date 类的简单扩展日期和时间的格式。我不能只使用 strftime 吗?功能支持EZTime 具有许多 strftime 不具备的格式化功能。 比如如果要...

    airbnb-scraper-

    日期set_date_URL()方法当前未正确考虑月底和年末。 CSV需要检查列表是否当前存在(应该推迟到转换为Rails应用程序并将其设置为数据库而不是CSV打印输出之前) 特征: 将此转换为完整的Ruby on Rails应用程序 ...

    Web 2_0 到 web 4_0 :未来的语义网络和网络操作系统(WebOS) - 译言翻译.mht

    Nova 的公司正在秘密进行一项研究,他将其描述为“基于 Java 的框架,可提供与 Ruby on Rails 类似的语义网络应用程序和服务,同时包含一些其他技术,如用于语义数据列表的高速及可扩展的存储层,强大的语义查询功能...

    spree_sale_prices

    Spree Commerce 扩展程序(Rails 引擎),可让您通过固定销售价格或原始价格的百分比来设置产品的销售价格。 销售价格具有开始日期、结束日期和启用标志,允许您安排销售、拥有销售价格的历史记录并暂停销售。 要求 ...

    perestrava:AA全栈项目

    该站点的第一个版本是作为一个项目构建的,截止日期为十天。 将添加更多功能,未来将进一步深化和扩展现有功能。 特征 使用 BCrypt 保护前端和后端用户身份验证 交互式路线图,用户可以在其中创建和保存路线 路线...

    solidus_sale_prices:完全基于spree_sale_prices

    大礼包销售价格Spree Commerce扩展程序(Rails Engine),使您可以设置产品的销售价格,既可以是固定价格,也可以是原始价格的一定百分比。 销售价格具有开始日期,结束日期和启用的标记,以允许您安排销售,具有...

    sugarcrm:用于 SugarCRM 的基于 ruby​​ 的 REST 客户端

    支持 Rails 2 和 3 ActiveRecord 样式查找器和对象 支持 SugarCRM 特定对象的创建、保存和删除 灵活的扩展框架 布尔值、日期和整数字段的验证、类型转换和序列化 从集合中查询、更新和删除记录 直接在 SugarCRM....

    bookseattle-js:bookseattle的前端

    特征保留在西雅图的预订系统适合不同类型人群的主题房预订房间的日历系统最终将其扩展为世界各地的早餐和床链技术选择草案后端-Ruby on Rails Webpack 面板( ) AWS住在西雅图特别感谢Ada开发人员学院让我踏入了...

    基于matlab的表情识别代码-Top-Python:GitHub上最有远见的项目

    日期:03/16/2018 注意:此列表将定期更新。 ID 名称 描述 语 星星 前叉 1个 使用数据流图进行计算以实现可扩展的机器学习 C ++ 92876 59682 2个 一个令人愉快的社区驱动(有1,000多个贡献者)的框架,用于管理zsh...

    java8集合源码-Top-Java:顶级视觉Github项目

    日期:03/16/2018 注意:此列表将定期更新。 ID 名称 描述 语 星星 货叉 1 JavaScript 风格指南 JavaScript 67838 12953 2 RxJava – JVM 的React式扩展 – 一个库,用于使用 Java VM 的可观察序列编写异步和基于...

    MongoDB权威指南(中文版)高清

    152.6.1 基本数据类型 152.6.2 数字 172.6.3 日期 182.6.4 数组 192.6.5 内嵌文档 192.6.6 _id和ObjectId 20第3章 创建、更新及删除文档 233.1 插入并保存文档 233.1.1 批量插入 233.1.2 插入:...

Global site tag (gtag.js) - Google Analytics