解析 Ruby 中的日期字符串

Parsing a date string in Ruby

目前我正在实现一项功能并使用外部 API。 APIreturns如下结构

{"StartDate"=>"/Date(1532563200000+0000)/", "ExpirationDate"=>"/Date(1564099200000+0000)/"}

我不确定如何解析 StartDateExpirationDate 以获取它们的 Ruby 时间格式的值。

欢迎任何反馈。

您可以使用 Time.zone.at 以秒为单位解析时间戳。

response = {"StartDate"=>"/Date(1532563200000+0000)/", "ExpirationDate"=>"/Date(1564099200000+0000)/"}

start_date = Time.zone.at(response['StartDate'][6..15].to_i)
#=> Wed, 25 Jul 2018 20:00:00 EDT -04:00

expiration_date = Time.zone.at(response['ExpirationDate'][6..15].to_i)
#=> Thu, 25 Jul 2019 20:00:00 EDT -04:00

一般 Ruby

的另一种方法
require 'date'
response.transform_values! { |date| Time.at(date[6..15].to_i).utc.to_datetime }

对于 Ruby 版本不支持 transform_values:

response.inject({}) { |h, (k, v)| h[k] = Time.at(v[6..15].to_i).utc.to_datetime; h }

感谢: