【问题标题】:How can I set daternagepicker to allow local datetime selection instead of utc如何设置 daternagepicker 以允许选择本地日期时间而不是 utc
【发布时间】:2015-04-22 14:52:15
【问题描述】:

我正在使用 Dan Grossman 的 daterangepicker 来显示日期时间范围以供用户选择。不幸的是,选择并传递给后端的日期时间是 UTC,因此被保存到数据库中。我需要设置 daterangepicker 以根据之前选择的时区显示本地时间。有谁知道如何处理这个? 我尝试添加 timeZone 选项(“01:00”),但似乎没有任何区别。

$('form .date_available').daterangepicker({
  timeZone: "01:00",
  timePicker: true,
  timePickerIncrement: 30,
  minDate: currentDate,
  minTime: currentTime,
  format: 'MM/DD/YYYY h:mm A',
  formatTime: 'h:mm A',
  formatDate: 'MM/DD/YYYY'
});

【问题讨论】:

    标签: javascript ruby-on-rails datetimepicker datetimeoffset


    【解决方案1】:

    您需要在 config/application.rb 中设置服务器的时区

    config.time_zone = 'Pacific Time (US & Canada)'
    

    或者您对用户的时区进行了更改,您可以将以下内容添加到 application_controller.rb,并且您应该在设置中保存用户时区:

    around_filter :user_time_zone
    
    def user_time_zone(&block)
      if user_signed_in?
        Time.use_zone(current_user.time_zone, &block)
      else
        Time.use_zone('Pacific Time (US & Canada)', &block)
      end
    end
    

    【讨论】:

    • 感谢 Mohamed,但 Rails 在 UTC 中正确保存了“created_at”时间,唯一的问题是这种形式。选择的日期时间应该作为本地时间发送到服务器并在后端转换为 UTC,或者在发送到服务器之前从本地时间转换为 UTC。例如,当用户在时区 +1:00 的本地时间的日期选择器中选择 3.pm 时,应将其保存在 db 中作为 2.pm UTC 但它被保存为 3.pm UTC,因为选择的日期在被选为 UTC。
    • 是的,我知道您可以执行以下操作,因为在 javascript 中玩时区并不那么有趣。 dt = DateTime.now => 2010 年 12 月 20 日星期一 18:59:43 +0100 dt = dt.change(:offset => "+0000") => 2010 年 12 月 20 日星期一 18:59:43 +0000 这将在不影响日期和时间的情况下更改偏移量。
    • 即使作为临时解决方案,它似乎也能正常工作。谢谢!
    猜你喜欢
    • 2020-09-27
    • 2020-09-18
    • 2021-04-05
    • 2012-10-29
    • 2023-04-03
    • 2016-12-18
    • 1970-01-01
    • 2010-11-21
    相关资源
    最近更新 更多