我们已经在伦敦地区配置了申请时间
config.time_zone = 'London'但需要为API响应返回UTC格式的日期时间,以避免夏令时问题
我尝试单独更改API控制器的时区-添加了一个之前的操作来设置API响应的UTC时间
api_controller.rb
before_action :set_utc_time
def set_utc_time
Time.zone = 'UTC'
end但是,这似乎也反映在web应用程序的响应中,整个应用程序的伦敦时区被更改为UTC
response_formatter.rb
Time.use_zone('UTC') do
render json: response_data, status: :ok
end因此,我尝试通过在块中设置时区来执行序列化程序响应格式化程序的时区,但这似乎不起作用
注意:我们使用的是fast_json_api序列化程序
sample serialiser:
class LinguistUnavailabilitySerializer
include FastJsonapi::ObjectSerializer
attributes :id, :linguist_id, :departure_time, :return_time, :reason
end我需要单独为API响应设置utc时区格式,但它不应反映在应用程序时区中
有什么想法吗?
发布于 2021-04-27 00:35:18
您是否可以尝试重新定义时间属性https://github.com/Netflix/fast_jsonapi#attributes的属性,并使用方法zone_offset并在本地时间和新时区之间进行相加
sample serialiser:
class LinguistUnavailabilitySerializer
include FastJsonapi::ObjectSerializer
attributes :id, :linguist_id, :departure_time, :return_time, :reason
attribute :departure_time do |object|
a = %w(%Y %m %d %H %M %S)
# ["%Y", "%m", "%d", "%H", "%M", "%S"]
tm = departure_time
# 2014-11-03 17:46:02 +0530
a.map { |s| tm.strftime(s) }
# ["2014", "11", "03", "17", "46", "02"]
a.map! { |s| tm.strftime(s).to_i }
# [2014, 11, 3, 17, 46, 2]
Time.new(*a, Time.zone_offset('PST'))
end
endhttps://stackoverflow.com/questions/67261571
复制相似问题