首页 > 解决方案 > Rails:将一个时区的未来会议时间转换为另一个时区

问题描述

使用 flatpickr,我允许用户指定未来会议的时间和日期,包括他们的时区。

结果是以下值:

Mon May 25 2020 12:00:00 GMT-0600 (Mountain Daylight Time)

他们可以选择与团队成员会面,该时间成员将设置他们当前的时区,我使用 ActiveSupport::TimeZone 存储该值(https://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html )

我试图弄清楚如何获取上面的日期结果并向安排会议的用户显示“X 将是晚上 7 点”。

我将 AttendeeZone 和 meetingTime 发送到 Rails 端点:

  def time_for_attendee

    attendeeZone = params["attendeeZone"]
    # => "Tokyo"

    meetingTime = params["meetingTime"]
    # => "Mon May 25 2020 12:00:00 GMT-0600 (Mountain Daylight Time)"

    attendeeTime = ???

    render json: {
      attendeeZone: attendeeZone,
      meetingTime: meetingTime,
      attendeeTime: attendeeTime
     }

  end

我将如何根据他们的时区将该会议时间转换为参加者时间?

我接近了,Time.zone.now.in_time_zone(attendeeZone)但我不确定如何将 meetingTime 的格式转换为 replace now

标签: ruby-on-railsruby

解决方案


它是.parse()

Time.zone.parse(params["meetingTime"]).in_time_zone(attendeeZone)

或者,如果您将其分配给模型,那么它将已经被自动解析。


推荐阅读