【问题标题】:Format Date in Ruby在 Ruby 中格式化日期
【发布时间】:2019-01-29 02:16:01
【问题描述】:

我有一个日期作为字符串返回:

date_str = "2018-08-17"

如何将其格式化为另一种标准日期格式,例如。 17/08/2018 以编程方式无需手动解析字符串?

【问题讨论】:

  • Ben,当您给出示例时,请确保所有内容都是有效的 Ruby 对象(例如,"2018-08-17" 而不是 2018-08-17,即使您声明后者是字符串)并分配一个变量到每个输入对象(我已编辑以添加变量date_str),以便读者可以在答案和 cmets 中引用这些变量而无需定义它们。请记住,读者会剪切和粘贴您的代码,因此您不希望他们必须添加引号等。

标签: ruby string date time format


【解决方案1】:

使用::strptime将字符串转换为日期对象,然后再用#strftime方法再转换为字符串。

require 'date'
Date.strptime('2018-08-17', '%Y-%m-%d').strftime("%d/%m/%Y")
# => "17/08/2018"

【讨论】:

  • 您可能希望包含require 'date',因为这是纯Ruby。 strptime 比懒惰的编码器的后备更可取:Date::parse,如 require 'date'; Date.parse("Theresa May had a rough week") #=> => #<Date: 2018-05-01 ((2458240j,0s,0n),+0s,2299161j)>
【解决方案2】:

Chronic (https://github.com/mojombo/chronic) 是解析任何格式的日期/时间的好工具,包括人类可读的格式。

require 'chronic' 
Chronic.parse("2018-08-17")

Chronic 的好处在于您甚至可以解析人类可读的时间,例如“明天”或“下个月”。

Chronic.parse('tomorrow')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 2010-11-16
    • 2017-02-13
    相关资源
    最近更新 更多