【发布时间】:2018-05-02 07:12:40
【问题描述】:
我有以下代码,在 ruby on rails 中使用 twitter gem。它不会为创建的推文返回正确的时间,尽管我已经在application.rb 中设置了我的时区并且也在这里设置了它。它比实际推文创建时间提前三个小时返回。
<% TwitterFeed.userTweets.each do |tweet| %>
<blockquote>
<%= parsed_tweet tweet %>
<% time_est = tweet.created_at.in_time_zone('Eastern Time (US & Canada)')%>
<br><small><%= (time_est.strftime("%m/%d/%y %I:%M%p %z")) %></small>
</blockquote>
<% end %>
我的application_helper.rb 中有以下代码来解析来自返回的tweet 对象的链接
module ApplicationHelper
def parsed_tweet tweet
_parsed_tweet = tweet.full_text.dup
tweet.urls.each do |entity|
html_link = link_to(entity.display_url.to_s, entity.expanded_url.to_s, target: '_blank')
_parsed_tweet.sub!(entity.url.to_s, html_link)
end
tweet.media.each do |entity|
html_link = link_to(entity.display_url.to_s, entity.expanded_url.to_s, target: '_blank')
_parsed_tweet.sub!(entity.url.to_s, html_link)
end
_parsed_tweet.html_safe
end
end
我的twitter_feed.rb 文件中有以下代码,我保存了所有函数。
def self.userTweets
client.user_timeline("twitter", count: 5, exclude_replies: true, include_rts: false)
end
我正在使用 twitter gem 的 6.2.0 版。
【问题讨论】:
-
请包含服务器日志
-
时间可能是从 twitter 转换的,就好像它是 UTC。尝试从 twitter 检索 UTC 时间,看看是否能解决问题。尽管您正在为 twitter 指定时区,但 rails 无法建立关系,只是假定默认值,并尝试对其进行转换。
-
@DivXZero 更改为 UTC 也不会显示正确的时间。
-
minimal reproducible example,拜托。鉴于提供的信息有限,我不知道如何重现您的问题。
-
例如,您使用的是什么版本的 gem? This change 在 2014 年使所有时间都返回 UTC 而不是本地时区。
标签: ruby-on-rails ruby twitter twitter-gem