`
xu_wccq
  • 浏览: 130909 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ruby 日期

    博客分类:
  • ruby
阅读更多
difference = Time.now - time
    seconds    =  difference % 60
    difference = (difference - seconds) / 60
    minutes    =  difference % 60
    difference = (difference - minutes) / 60
    hours      =  difference % 24
    difference = (difference - hours)   / 24
    days       =  difference % 7
    difference = (difference - days)    /  7
    weeks      =  difference % 4
    difference = (difference - weeks)   / 4
    months     =  difference % 12
    years      = (difference - months)  / 12

puts "(#{years} years , #{months} months ,#{weeks} weeks, #{days} days, #{hours}:#{minutes}:#{seconds})"



rail 实现

def distance_of_time_in_words(from_time, to_time = 0, include_seconds = false)
        from_time = from_time.to_time if from_time.respond_to?(:to_time)
        to_time = to_time.to_time if to_time.respond_to?(:to_time)
        distance_in_minutes = (((to_time - from_time).abs)/60).round
        distance_in_seconds = ((to_time - from_time).abs).round

        case distance_in_minutes
          when 0..1
            return (distance_in_minutes == 0) ? 'less than a minute' : '1 minute' unless include_seconds
            case distance_in_seconds
              when 0..4   then 'less than 5 seconds'
              when 5..9   then 'less than 10 seconds'
              when 10..19 then 'less than 20 seconds'
              when 20..39 then 'half a minute'
              when 40..59 then 'less than a minute'
              else             '1 minute'
            end

          when 2..44           then "#{distance_in_minutes} minutes"
          when 45..89          then 'about 1 hour'
          when 90..1439        then "about #{(distance_in_minutes.to_f / 60.0).round} hours"
          when 1440..2879      then '1 day'
          when 2880..43199     then "#{(distance_in_minutes / 1440).round} days"
          when 43200..86399    then 'about 1 month'
          when 86400..525599   then "#{(distance_in_minutes / 43200).round} months"
          when 525600..1051199 then 'about 1 year'
          else                      "over #{(distance_in_minutes / 525600).round} years"
        end
      end


中文实现:
  #相对现在来格式化时间
  def time_ago_in_words_zh(from_time, include_seconds = false)
    distance_of_time_in_words(from_time,Time.now,include_seconds)
  end
  
  def distance_of_time_in_words(from_time, to_time = 0, include_seconds = false)
    from_time = from_time.to_time if from_time.respond_to?(:to_time)
    to_time = to_time.to_time if to_time.respond_to?(:to_time)
    distance_in_minutes = (((to_time - from_time).abs)/60).round
    distance_in_seconds = ((to_time - from_time).abs).round

    case distance_in_minutes
      when 0..1
        return ' 1 分钟' unless include_seconds
        case distance_in_seconds
          when 0..4   then ' 5 秒'
          when 5..9   then ' 10 秒'
          when 10..19 then ' 20 秒'
          when 20..39 then ' 半分钟'
          else             ' 1 分钟'
        end

      when 2..44           then " #{distance_in_minutes} 分钟"
      when 45..1439        then " #{(distance_in_minutes.to_f / 60.0).round} 小时"
      when 1440..2879      then ' 昨天'
      when 2880..4319      then ' 前天'
      when 4320..43199     then " #{(distance_in_minutes / 1440).round} 天"
      when 43200..525599   then " #{(distance_in_minutes / 43200).round} 个月"
      else                      " #{(distance_in_minutes / 525600).round} 年"
    end
  end
分享到:
评论

相关推荐

    rubyonrails+Ruby+取得指定月日期数方法

    本文将介绍如何在 Ruby 环境下,结合 Ruby on Rails,获取指定月份的所有日期数。 首先,我们需要知道 Ruby 语言中处理日期的库是 `Date` 类,该类属于 Ruby 的标准库,不需要额外安装。在 Ruby on Rails 中,可以...

    Ruby-yymmddTinyDSL用于Ruby解析和格式化日期

    在处理日期和时间时,Ruby提供了多种内置库,如Date、Time以及ActiveSupport的TimeWithZone等。然而,对于某些特定需求,开发者可能会寻找更加轻量级和灵活的解决方案,这就是`yymmdd`项目的目的所在。 `yymmdd`是...

    Ruby-Chronic一个纯Ruby编写的自然语言日期时间解析器

    Ruby-Chronic是一个专门为Ruby编程语言设计的自然语言日期和时间解析库。它的主要功能是将人类可读的日期和时间字符串转换为精确的日期和时间对象,极大地简化了程序员在处理用户输入的时间信息时的工作。这个库的...

    Ruby中处理时间和日期

    Ruby 中处理时间和日期 Ruby 中处理时间和日期可以使用 Time 类来生成当前时间的对象。Time 类有类方法 mktime(同义方法是 local 方法)来根据传入的参数生成时间对象,并且它使用的是当前的时区。例如: t = ...

    Ruby-validatestimelinessActiveModel和Rails的日期与时间验证插件

    `validates_timeliness` 是一个针对 Ruby on Rails(以及支持 ActiveModel 的其他 ORM)的插件,用于增强模型中日期和时间的验证功能。这个插件使得开发者能够更精细地控制日期和时间字段的验证规则,确保数据的准确...

    ice_cube:Ruby日期重现库-允许轻松创建重现规则和快速查询

    强大之处在于可以指定多个规则,并使ice_cube快速确定计划是在某个日期(.occurs_on?)还是计划在何时发生(.occurrences,.first,.all_occurrences)。 假设您要: 每个星期五10月的13日你会这样写: schedule =...

    ruby语言帮助文当

    Ruby的标准库提供了大量预装模块和类,用于文件操作、网络通信、日期和时间处理等各种任务,是Ruby强大功能的基础。 2. `ruby20-core.chm`:可能是关于Ruby 2.0核心库的文档,核心库包含了语言的基本结构和功能,如...

    Ruby-TZInfoRubyTimezone库

    通过以上内容,我们可以看到Ruby-TZInfoRubyTimezone库在日期和时间处理中的关键作用,它是开发跨时区应用的重要工具,能够帮助开发者避免由于时区和夏令时处理不当导致的错误。在实际项目中,正确使用TZInfo库可以...

    11.5 时间日期the ruby way.rar

    在Ruby编程语言中,时间日期处理是至关重要的,特别是在开发涉及日志记录、事件调度或数据分析的应用程序时。"11.5 时间日期the ruby way"这个主题深入探讨了Ruby中处理时间日期的最佳实践和常见用法。让我们逐一...

    ruby官方chm文档

    其中包括文件操作、网络通信、XML解析、日期和时间处理、数学运算等功能。例如,`File`类用于处理文件和目录,`Net::HTTP`用于HTTP通信,`JSON`模块则用于解析和生成JSON格式的数据。通过这个文档,你可以了解到每个...

    Ruby-Ruby的面向对象的枚举

    这样的枚举类可以方便地用于表示和比较日期,或者根据工作日执行不同的逻辑。 然而,仅仅定义这些常量并不足以实现枚举的全部功能。为了增强枚举类的功能,我们可以添加方法来实现枚举的遍历、比较和其他操作。例如...

    Ruby-twittercldrrbICU的Ruby实现

    这个库提供了诸如文本分词、语言识别、日期和时间格式化、数字和货币转换等功能,极大地简化了在Ruby应用中实现国际化的需求。 对于“twitter-cldr-rb-2ba6d4a”这个压缩包文件,我们可以推测这是该库的一个特定...

    Ruby 取得指定月日期数的方法

    参考链接中提供了更多关于Ruby日期处理的资料,可以进一步研究和学习,以加深对日期和时间操作的理解。例如,你可以探索`Date`类的`beginning_of_month`方法,它返回月份的第一天,或者`cweek`方法,它返回日期在该...

    Ruby-rabl普通的ruby模板包含jsonbsonxmlplist和msgpack支持

    Ruby是一种动态、面向对象的编程语言,而RABL(Ruby API Builder Language)是Ruby社区中一个流行的模板库,专门用于生成结构化的数据输出,如JSON、BSON、XML、Plist和MsgPack。这些格式在Web开发中尤其重要,因为...

    ruby 最新 安装文件 与 API

    Ruby的标准库非常丰富,提供了大量的模块和类,允许开发者进行各种任务,如文件操作、网络通信、日期和时间处理等。此外,Ruby社区还开发了大量的gem(Ruby的扩展包),这些gem也提供了丰富的API,使得开发者可以...

    Ruby API Docs帮助文档

    标准库是Ruby内置的一系列模块和类,涵盖了各种常用的功能,如文件操作、网络通信、日期和时间处理等。通过这些文档,开发者可以了解到如何使用这些模块和类来构建自己的应用程序。 接着,`ruby_1_9_2_core_rdocs....

    datey:用于查询和格式化日期的 Ruby 库

    日期Datey 是一个相对简单的库,它允许您以一种很好的方式询问 Ruby 日期/时间对象,以确定日期相对于今天的位置。安装只需将此添加到您的 Gemfile 并运行bundle即可安装它。 gem "datey" , "~> 1.0"用法格式化Datey...

    Ruby-Logging一个用在Ruby程序中灵活日志库

    例如,你可能希望在每个日志条目前添加日期和时间,以及产生日志的代码行号。 在实际应用中,Ruby-Logging库还提供了过滤器功能,这使得你可以根据特定条件决定是否记录日志。比如,你可以设置一个过滤器,只记录...

    Ruby Performance Optimization, Why Ruby is Slow, and How to Fix It

    出版日期: 2015-11-29 pages 页数: (202) You don’t have to accept slow Ruby or Rails performance. In this comprehensive guide to Ruby optimization, you’ll learn how to write faster Ruby code–but ...

Global site tag (gtag.js) - Google Analytics