`
ddl1st
  • 浏览: 98730 次
  • 性别: 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

相关推荐

    rails中使用javascript日期控件

    在Rails开发中,为了增强用户体验,常常需要使用JavaScript来处理日期选择和管理。这篇博客“rails中使用javascript日期控件”探讨的就是如何在Rails应用中集成JavaScript日期控件,特别是通过一个名为WebCalendar....

    Ruby on Rails 指南 v5.0.1 中文版

    - **使用日期和时间的表单辅助方法**:说明如何处理日期和时间相关的表单元素。 - **上传文件**:介绍如何处理文件上传操作。 - **定制表单生成器**:解释如何创建自定义的表单生成器。 - **理解参数命名约定**:...

    jquery-ui+jquery-ui-rails

    首先,jQuery UI是基于jQuery库的一个扩展,它提供了大量的可定制组件,如对话框、拖放功能、日期选择器、进度条等,为开发者创建互动式用户界面提供了便利。它的核心特点在于易用性和灵活性,使得开发者无需从零...

    rails 2.2.2 API

    7. **插件(Plugins)**:Rails 社区提供了大量的插件,可以扩展框架的功能或提供特定的解决方案。 8. **Railties**:是 Rails 的核心组件,包括初始化过程、命令行工具和框架的其他基础设施。 9. **Action...

    ruby on rails社区网站开发源码

    13. **社区插件(Gems)**:Rails的生态系统中有大量高质量的第三方Gem,如Devise(用户认证)、Pundit(授权管理)、Paperclip或Carrierwave(文件上传)等,它们可以极大地扩展Rails的功能。 通过研究这个源码,...

    InspiniaAdmin 2.6.1 Rails_Full_Version

    此版本的InspiniaAdmin强调了易用性、灵活性和可扩展性,是搭建企业级应用的理想选择。 首先,InspiniaAdmin是基于Bootstrap 3的,这意味着它拥有响应式设计,可以在各种设备上自适应显示,无论是桌面、平板还是...

    Agile Web Development with Rails中文版 3rd Edition

    **16.6 时间和日期的扩展** 介绍了如何扩展Time和Date类,以更好地处理时间戳和日期。 **16.7 Ruby符号的扩展** 解释了如何通过ActiveSupport扩展Ruby中的符号。 **16.8 with_options** 介绍了如何使用`with_...

    rails 2.2.3 依赖

    - `activesupport-2.2.3.gem`:ActiveSupport包含了一系列实用的类和模块,如时间处理、日历日期、数组和哈希扩展等,这些工具增强了Ruby的基础库。 - `activerecord-2.2.3.gem`:ActiveRecord是Rails中的ORM...

    Apress.Beginning.Rails.3

    本书旨在帮助读者理解Rails的基本概念、工作原理以及如何利用Rails来构建高效、可扩展的Web应用。 #### 核心知识点 ##### 1. Ruby on Rails 概览 - **定义**:Ruby on Rails(简称 Rails 或 RoR)是一种用于快速...

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

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

    Ruby-Administrate一个框架用于在Rails中创建灵活的强大的管理仪表板

    8. **插件系统**:Administrate有一个活跃的社区,提供了许多插件,可以扩展其功能,例如日期范围筛选器、多文件上传等。 9. **版本管理**:“e980d40”这样的版本号可能意味着在项目中锁定特定版本,以确保一致性...

    Ruby On Rails傻瓜书

    - **出版日期**:2007年 - **版权归属**:本书版权所有归Wiley Publishing, Inc.所有,并在加拿大同时出版。 - **版权声明**:书中内容受版权保护,除法律允许的情况外,未经出版社书面许可不得复制或传播。 #### ...

    InspiniaAdmin 2.5 Rails_Seed_Project

    为了确保项目的可扩展性和可维护性,InspiniaAdmin 2.5 Rails_Seed_Project通常会采用Bundler来管理依赖,通过Gemfile列出所有必要的gem(Ruby库)。这使得开发者能方便地安装和升级项目所依赖的库。 总的来说,...

    ruby on rails 2.1新特性介绍

    - **Rake任务、插件和脚本的优化**:Rails 2.1对Rake任务进行了扩展,增加了更多的命令行工具和脚本来辅助开发流程,同时对插件系统的管理也进行了改进,使其更加稳定和可靠。 #### Ruby 1.9的兼容性 - **Ruby 1.9...

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

    总的来说,`validates_timeliness` 是一个强大且灵活的日期和时间验证工具,它扩展了Rails的验证机制,帮助开发者更有效地管理日期和时间字段的验证规则,同时提供良好的用户体验。通过其丰富的功能和易于使用的API...

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

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

Global site tag (gtag.js) - Google Analytics