首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Rails中设置API序列化响应的UTC格式?

如何在Rails中设置API序列化响应的UTC格式?
EN

Stack Overflow用户
提问于 2021-04-26 14:04:40
回答 1查看 96关注 0票数 3

我们已经在伦敦地区配置了申请时间

代码语言:javascript
复制
config.time_zone = 'London'

但需要为API响应返回UTC格式的日期时间,以避免夏令时问题

我尝试单独更改API控制器的时区-添加了一个之前的操作来设置API响应的UTC时间

代码语言:javascript
复制
 api_controller.rb

 before_action :set_utc_time

 def set_utc_time
  Time.zone = 'UTC'
 end

但是,这似乎也反映在web应用程序的响应中,整个应用程序的伦敦时区被更改为UTC

代码语言:javascript
复制
response_formatter.rb

Time.use_zone('UTC') do
render json: response_data, status: :ok
end

因此,我尝试通过在块中设置时区来执行序列化程序响应格式化程序的时区,但这似乎不起作用

注意:我们使用的是fast_json_api序列化程序

代码语言:javascript
复制
sample serialiser:

class LinguistUnavailabilitySerializer
  include FastJsonapi::ObjectSerializer
  attributes :id, :linguist_id, :departure_time, :return_time, :reason
end

我需要单独为API响应设置utc时区格式,但它不应反映在应用程序时区中

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2021-04-27 00:35:18

您是否可以尝试重新定义时间属性https://github.com/Netflix/fast_jsonapi#attributes的属性,并使用方法zone_offset并在本地时间和新时区之间进行相加

代码语言:javascript
复制
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
end

基于https://stackoverflow.com/a/26714154/10124678的转换时间

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67261571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档