我正在编写一个自定义 DateTime 方法来获取current web viewer
时区并将所有时间视图设置为他/她的时区。
我如何获得本地时区
# index.html.erb
<%= get_time( getTimeZone(), entry.created_at) %> # getTimeZone() => "Asia/Shanghai", wrong usecase
<%= get_time("Asia/Shanghai", entry.created_at) %> # works like charm
<script>
function getTimeZone() {
return Intl.DateTimeFormat().resolvedOptions().timeZone
}
</script>
下面我简单地将数据库UCT时间转换为用户本地时区,然后计算ago
时差。
# application_helper.rb
def get_time(user_zone, created_at)
user_now = Time.find_zone(user_zone).now
created_at_local = created_at.in_time_zone(user_zone)
difference = user_now - created_at_local
if 60 > difference
difference.round.to_s + "s"
elsif 3600 > difference
(difference / 1.minute).round.to_s + "m"
elsif 86400 > difference
(difference / 1.hour).round.to_s + "h"
else
created_at_local.strftime("%b %d, %Y")
end
end
我怎样才能将两者联系起来?或者也许我怎样才能在 JS 中实现 rails 方法?
我刚刚意识到rails逃避正斜杠??我认为这只是路线上的特殊情况。我尝试了所有形式的替代,但无效。
"Asia/Shanghai" => ""
有位移吗?