【问题标题】:Format Date ruby格式化日期红宝石
【发布时间】:2015-08-20 03:12:42
【问题描述】:

我有一个2015-03-09T11:09:00.000Z 格式的日期字符串。如何将其转换为yyyy-mm-dd 格式?

我试过了,

require 'date'
string = "2015-03-09T11:09:00.000Z"
date = Date.strptime(string,"%Y%m%d")

它给出了, ArgumentError: invalid date.

我想要以下输出"2015-03-09"

谁能告诉我一些方向?我究竟做错了什么?谢谢。

【问题讨论】:

  • 我建议您以后不要感谢大家的回答。这只是混乱。此外,你不应该对糟糕或不正确的答案表示感谢,但如果你不感谢五分之一的答案,那么缺失的感谢就会像拇指一样突出。您会看到 SO 成员倾向于将他们的感激之情限制在真正出色的答案上。最后,成员们并不期望得到感谢。

标签: ruby-on-rails ruby date datetime


【解决方案1】:

你做的几乎是对的。只是在指定日期格式时犯了一个小错误。您只需将:"%Y%m%d" 更改为:"%Y-%m-%d"。然后,它会工作!

require 'date'
string = "2015-03-09T11:09:00.000Z"
Date.strptime(string,"%Y-%m-%d").to_s
# > "2015-03-09"

要查看所有可用的日期格式,请查看documentation

如何将其转换为 yyyy-mm-dd 格式?

如上述文档所示,您可以使用 '%Y-%m-%d' 格式,该格式将像您想要的 yyyy-mm-dd 格式一样工作。

【讨论】:

    【解决方案2】:

    假设你想要一个字符串,而不是一个日期对象,你只需要:

    string[0,10] #=> "2015-03-09"
    

    【讨论】:

    • 非常感谢。这有帮助!
    【解决方案3】:

    试试这个

    require 'date'
    string = "2015-03-09T11:09:00.000Z"
    date = Date.strptime(string,"%Y-%m-%d").to_s
    

    【讨论】:

      【解决方案4】:

      字符串在 Time 中,所以我会使用 Time 来解析字符串并将其格式化为日期。

      string = "2015-03-09T11:09:00.000Z"
      date = Time.parse(string).strftime("%Y-%m-%d")
      

      输出为"2015-03-09"。希望对您有所帮助。

      【讨论】:

      • 这很有趣,考虑到Time.methods.include?(:parse) #=> false
      猜你喜欢
      • 2019-05-16
      • 2011-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多