解析 Ruby 中的日期字符串
Parsing a date string in Ruby
目前我正在实现一项功能并使用外部 API。 APIreturns如下结构
{"StartDate"=>"/Date(1532563200000+0000)/", "ExpirationDate"=>"/Date(1564099200000+0000)/"}
我不确定如何解析 StartDate
和 ExpirationDate
以获取它们的 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 }
感谢:
目前我正在实现一项功能并使用外部 API。 APIreturns如下结构
{"StartDate"=>"/Date(1532563200000+0000)/", "ExpirationDate"=>"/Date(1564099200000+0000)/"}
我不确定如何解析 StartDate
和 ExpirationDate
以获取它们的 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 }
感谢: