Ruby如何从DateTime对象获取2018-08-25?

时间:2018-08-25 04:21:12

标签: ruby-on-rails ruby

我在一个模型对象上有一个DateTime属性。

示例数据:"2018-08-28T01:00:00.000+00:00"

我正在基于DateTime属性创建一个新的JSON对象,但是我只想将此部分放入其中2018-08-28

我也想抓住小时部分并将其放入JSON对象中。例如01

目前,我所传递的是这个JSON。

{"date":"2018-08-25T18:00:00.000+00:00"}

我想要

{"date":"2018-08-25", "hour":"01"}

1 个答案:

答案 0 :(得分:4)

将字符串解析为有效的DateTime实例,然后使用DateTime#strftime以所需的任何格式打印回该字符串:

require 'datetime'
DateTime.
  iso8601("2018-08-28T01:00:00.000+00:00").
  strftime('%Y-%m-%d')
#⇒ "2018-08-28"

要获取日期和一个小时,可以这样做:

date, hour =
  DateTime.
    iso8601("2018-08-28T01:00:00.000+00:00").
    strftime('%Y-%m-%d,%H').
    split(',')
#⇒ ["2018-08-28", "01"] 

要获取所需的哈希值:

%w|date hour|.
  zip(
    DateTime.
      iso8601("2018-08-28T01:00:00.000+00:00").
      strftime('%Y-%m-%d,%H').
      split(',')
  ).
  to_h
#⇒ {
#    "date" => "2018-08-28",
#    "hour" => "01"
# }