【问题标题】:How can I use a Date object and a string with a day name to create a new Date object?如何使用 Date 对象和带有日期名称的字符串来创建新的 Date 对象?
【发布时间】:2012-11-21 08:35:23
【问题描述】:

我有一个日期对象

Mon, 03 Dec 2012

我有一个包含日期名称的字符串

"Thursday"

如何使用这两个对象找到一个新的 Date 对象,该对象表示与原始 Date 对象在同一周内的日期名称?所以对于这个例子,它会是

Thu, 07 Dec 2012

在这种情况下,一周从星期一到星期日。

我正在使用 Rails 3.2.0 和 Ruby 1.9.3。

【问题讨论】:

    标签: ruby-on-rails ruby date


    【解决方案1】:

    如果你能设法将“星期四”转换为第 4 天——我知道你可以——你可以得到另一个这样的日期:

    1.9.3p125 :014 > d = Date.parse "Mon, 03 Dec 2012"
     => Mon, 03 Dec 2012 
    1.9.3p125 :015 > Date.commercial d.cwyear, d.cweek, 4
     => Thu, 06 Dec 2012 
    1.9.3p125 :016 > 
    

    顺便说一句,您可以将日期名称到数字的映射存储在 Array 或 Hash 中,或者使用 I18n。

    【讨论】:

      【解决方案2】:

      我相信有更好的方法可以做到这一点,但你可以这样做

      def date_by_day(date, day_name)
        beginning_of_week = date.beginning_of_week
        7.times do |i|
          _date = beginning_of_week + i.days
          return _date if _date.strftime("%A") == day_name
        end
      end
      

      【讨论】:

        【解决方案3】:

        这个很适合你。

        def date_by_day(date, day_name)
          beginning_of_week = date.beginning_of_week
          day_number = Time::DAYS_INTO_WEEK[day_name.to_sym]
          return (beginnig_of_week + day_number.days)
        end
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-06-10
          • 1970-01-01
          • 2020-08-18
          • 1970-01-01
          • 2014-07-01
          • 2011-04-24
          • 1970-01-01
          • 2019-10-12
          相关资源
          最近更新 更多