2015-04-22 55 views
0

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

$('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' 
}); 

回答

0

您需要设置时区在配置服务器/ 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 
+0

感谢Mohamed但Rails在UTC保存'created_at'时间正确,唯一的问题是这种形式。选择的日期时间应以本地时间的形式发送到服务器,并在后端转换为UTC或在本地时间之前将其从UTC转换为UTC,然后再发送到服务器。例如,当用户在时区+1:00的本地时间在日期选择器中选择3.pm时,应将其保存为db,因为UTC为2.pm,但它将保存为3.pm UTC,因为所选日期在被选为UTC。 – evoo

+1

是的,我明白你可以做像下面这样的东西在JavaScript中玩时区而不是那么好玩。 dt = DateTime.now => 2010年12月20日星期一18:59:43 +0100 dt = dt.change(:offset =>“+0000”) => 2010年12月20日星期一18:59: 43 +0000 这将改变偏移量而不影响日期和时间。 –

+0

即使作为一种临时解决方案,这似乎也能正常工作。谢谢! – evoo

相关问题