`
乌龙饭
  • 浏览: 3421 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类
最新评论

rails time format

阅读更多
背景知识:Time&TimeWithZone是两个时间的类,在数据库中可以是年月日时分秒毫秒~在页面输出的时候,有时候不需要这些精确的信息,更多的时候我们需要定制化的时间输出格式,这样就用到了rails扩展的功能


1.to_s

active_support中有对于这两个类的扩展,分别重写了很多的方法,to_s这个方法就不再是简简单单的转化为string输出的功能了,它接受一个symbol作为参数,来确定需要显示成什么样子的时间,来看源代码:
  class Time

  DATE_FORMATS = {
    :db           => "%Y-%m-%d %H:%M:%S",
    :number       => "%Y%m%d%H%M%S",
    :time         => "%H:%M",
    :short        => "%d %b %H:%M",
    :long         => "%B %d, %Y %H:%M",
    :long_ordinal => lambda { |time| time.strftime("%B #{ActiveSupport::Inflector.ordinalize(time.day)}, %Y %H:%M") },
    :rfc822       => lambda { |time| time.strftime("%a, %d %b %Y %H:%M:%S #{time.formatted_offset(false)}") }
  }
  
  end


在DATE_FORMATS 中定义了7种输出的格式,因此能够满足一般的应用,使用的时候,只需要在to_s后加上需要的时间格式:
  #   time.to_s(:time)                    # => "06:10:17"
  #   to_formatted_s为to_s的别名,意义一样~
  #
  #   time.to_formatted_s(:db)            # => "2007-01-18 06:10:17"
  #   time.to_formatted_s(:number)        # => "20070118061017"
  #   time.to_formatted_s(:short)         # => "18 Jan 06:10"
  #   time.to_formatted_s(:long)          # => "January 18, 2007 06:10"
  #   time.to_formatted_s(:long_ordinal)  # => "January 18th, 2007 06:10"
  #   time.to_formatted_s(:rfc822)        # => "Thu, 18 Jan 2007 06:10:17 -0600"


但是有时候这些需求并不能够满足我们,方法很简单,只要我们增加DATE_FORMATS 这个hash中的配置信息,就能够来定制我们需要的结果。在config/enviromeng.rb文件中,加入下面的代码,
Time::DATE_FORMATS.merge!(
  :date => '%Y-%m-%d'
  )
#rails2.x可能需要改成下面的代码
ActiveSupport::CoreExtensions::Time::Conversion::DATE_FORMATS.merge!(
    :date => '%Y%m%d'
  )


需要重启服务,然后再页面中就能够使用我们自己定制的格式了,
<%= user.created_at.to_formatted_s(:date) %>
分享到:
评论

相关推荐

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

    &lt;%= local_time(@post.created_at, format: :short) %&gt; ``` 在这里,`:short`是一个可选参数,用于指定时间的显示格式。你可以根据需要自定义格式,或者使用预定义的如`:long`、`:default`等。 `local_time`还支持...

    timeservice:一种简单的EE服务,现在可以在事务中保持不变

    在实际应用中,我们可以将timeservice集成到Rails或其他Web框架中,或者作为独立的库供其他服务调用。通过配置,我们可以决定是否启用事务时间一致性模式,以适应不同的系统需求。 综上所述,"timeservice"项目提供...

    local_time_helper.cr:来自local_time gem的local_time视图助手的水晶端口(https:github.combasecamplocal_time)

    `local_time` gem由Basecamp团队创建,它在Ruby on Rails社区中广泛使用,为开发者提供了在视图中方便地显示基于用户浏览器时区的时间戳的功能。`local_time_helper.cr`则是这个概念在Crystal语言中的移植,它允许...

    rail 4 days

    **Using Ruby to format Date and Time** 在显示日期和时间时,可以使用 Ruby 的内置方法来进行格式化处理。 **Creating a Javascript confirmation Dialogue** 为了增强用户体验,可以在执行某些操作前弹出确认...

    Ruby的25个编程细节(技巧、实用代码段)

    3. `use_standard_json_time_format` 设置为 `true`,使JSON序列化的时间和日期使用ISO8601格式。 4. 不对JSON中的HTML实体进行转义,保留原始格式。 以上内容涵盖了给定文件中的25个编程细节中的部分细节,这些...

    mantis_ruby:一种将虫子推入螳螂的宝石

    如何安装Rubygem install mantis_ruby 在Rails的Gemfile中gem 'mantis_ruby' , '~&gt; 0.1 . 2在irb中测试% irb&gt;&gt; require 'mantis_ruby'=&gt; true&gt;&gt; MantisRuby . hiHello developer! Welcome to Mantis Ruby Gem .You ...

    ruby导出csv文件

    format.csv { send_data render_to_string('users/export.csv.erb'), filename: "users_#{Time.now.strftime('%Y%m%d')}.csv" } end end end ``` 这个`export_csv`方法从数据库中获取所有用户,然后通过`respond...

    linux下安装Nginx以及配置文件详解

    log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access....

Global site tag (gtag.js) - Google Analytics