【问题标题】:Datamapper DateTime to String behaviourDatamapper DateTime 到 String 的行为
【发布时间】:2009-08-24 10:21:35
【问题描述】:

我使用 Datamapper 作为 ORM 编写了我的第一个项目,所以请耐心等待。 :)

我尝试从 DateTime 字段中获取字符串:

Error.first.submitted_at.to_s =>“2009-08-24T12:13:32+02:00”

返回的字符串对我不好。在 ActiveRecord 中,我可以这样做:

Error.first.submitted_at.to_s(:only_date)

或任何其他日期格式化程序。 DataMapper 中是否有类似的东西,或者我必须使用 strftime 方法?

【问题讨论】:

    标签: ruby string datetime datamapper


    【解决方案1】:

    这是使用 AcitveSupport 提供的一项功能。你可以通过require 'activesupport' 得到它。不过,这可能有点矫枉过正。你也可以使用Facets 中的#stamp 来做同样的事情,但你必须设置:only_date 格式:

    require 'facets/date'
    
    Date::FORMAT[:only_date] = '%d.%m.%y'  # For Date objects
    Time::FORMAT[:only_date] = '%d.%m.%y'  # For DateTime objects
    
    d = DateTime.now
    d.stamp(:only_date)  # => "24.08.09"
    

    如果你真的想将它与to_s 方法一起使用,你也可以这样做:

    require 'facets/date'
    
    Date::FORMAT[:only_date] = '%d.%m.%y'  # For Date objects
    Time::FORMAT[:only_date] = '%d.%m.%y'  # For DateTime objects
    
    class DateTime
      alias :default_to_s :to_s
      def to_s(format=nil)
        if format.nil?
          default_to_s
        else
          stamp format
        end
      end
    end
    
    d = DateTime.now
    d.to_s(:only_date)  # => "24.08.09"    
    

    【讨论】:

    • 好吧,我希望 DataMapper 以某种方式支持它。我将使用我的实现 to_s 扩展 DateTime 类。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    相关资源
    最近更新 更多