1

我有以下代码,twitter在 ruby​​ on rails 中使用 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

我正在使用twittergem 的 6.2.0 版本。

4

1 回答 1

0

让我们把它简化为一个最小的(!!) 示例,因为这个问题实际上与 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时间转换为不同的时区,您可能会错误地显示它。

于 2017-11-19T13:21:58.963 回答