如何在Rails4应用程序中显示用户时区



我想显示访问用户的时间和相应的区域。例如,如果记录是在格林尼治标准时间中午12点创建的。如果有人在GMT+5时区访问,则应显示下午5点。这在Rails中是否有可能实现?我设置了config.active_record.default_timezone = :local,但它在UTC 中显示信息

运行rake timezones:local返回多个条目:

* UTC +05:00 *
Ekaterinburg
Islamabad
Karachi
Tashkent

我属于Karachi

我不确定是否只使用RubyonRails就可以做到这一点。我不得不使用JavaScript将相应的时间更改为客户端的本地时区,我想这是服务器端代码无法完成的。这就是我在实现时所做的

首先创建一个辅助方法:

def show_created_time(record)
  time = record.created_at.strftime('%Y-%m-%dT%H:%M:%S')
  content_tag(:span, time, "data-timer" => time, :class => 'record_created_time')
end

注意:创建这样的helper方法并不是强制性的。您只需创建一个HTML元素(span、p、div等),它具有data-timer属性,时间格式如上所述。

然后调用助手方法:

<%= show_created_time(record) %>

现在创建一个JavaScript文件,例如,让我们称之为timer.js:

$(document).ready(function() {
  $("[data-timer]").each(function() {
    var cTime = $(this).attr('data-timer');
    // createdTime for record in db:
    var createdTime = new Date(cTime);
    // Return the timezone difference between UTC and User Local Time
    // var date = new Date();
    var userTimeZoneDiff = createdTime.getTimezoneOffset();
    // Since there are 60,000 milliseconds in a minute
    var MS_PER_MINUTE = 60000;
    // Record final created_at will depend on the final subtracted date as:
    var recordCreatedDateTime = new Date(createdTime - userTimeZoneDiff * MS_PER_MINUTE);
    $(this).text(recordCreatedDateTime);
  });
});

请确保在您的应用程序中包含此js。js:

//= require timer.js

这是我实现它的项目。在这里添加它作为参考。

相关内容

  • 没有找到相关文章

最新更新