我有以下代码,在rails上的ruby中使用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。
答案 0 :(得分:0)
让我们将其缩小为 minimal (!!)示例,因为这个问题实际上与Twitter完全无关:
time_utc = Time.utc(2017, 'Nov', 19, 13, 30, 0)
#=> 2017-11-19 13:30:00 UTC
time_est = time_utc.in_time_zone('Eastern Time (US & Canada)')
#=> Sat, 19 Nov 2017 08:30:00 EST -05:00
time_est.strftime("%m/%d/%y %I:%M%p")
#=> "11/19/17 08:30AM"
time_est.strftime("%m/%d/%y %I:%M%p %z")
#=> "11/19/17 08:30AM -0500"
您正在使用strftime
而显示时区信息。
因此,自从您将created_at
时间转换为其他时区后,您可能会错误地显示它。