Rails棒球时间计划在制作时减少了5个小时

时间:2014-04-11 14:35:30

标签: ruby-on-rails ruby timezone

我有一个应用程序:http://arethebaronsplaying.com/每天晚上7点在美国中部时间生产,但在本地工作正常。该网站由Ninefold托管。

简而言之,我有一个带有一堆Game对象的seeds.rb文件,而Game的一个属性是date,它被设置为m / d格式,例如。 4/09。

每天晚上7点,应用程序会在下一场比赛结束时显示一个很大的NO和文字,并且下一场比赛是当天的比赛。然后在它下面,它会显示YES!与当天的比赛。

所以它显示的是YES和NO,这让我觉得Date.today计算时间的方式可能与Time.now不同,而且因为我正在使用它们,所以错误的将是显示NO。

无论如何,这是我的逻辑:

<% i = 0 %>
<% games.each do |game| %>
<% if game.date.strftime("%_m/%d")[1..-1] == Time.now.strftime("%_m/%d")[1..-1] && game.away == false %>
<h1 class="main-text answer yesanswer" id="responsive_headline"><%=link_to "YES!", "http://www.milb.com/tickets/singlegame.jsp?sid=t247", target: "_blank" %></h1>
<% i = 1 %>
<br>
<h2 class="main-text2 gamewrap" id="responsive_headline2">
    <% if game.away == false %>
        <span class="next-venue">vs.</span>
        <span class="next-opponent"><%= game.opponent %></span> |
        <span class="next-time"><%= game.time %></span>
    <% else %>
        <span class="next-venue">at</span>
        <span class="next-opponent"><%= game.opponent %></span> |
        <span class="next-time"><%= game.time %></span>
    <% end %>
</h2>
<% elsif game.date.strftime("%_m/%d")[1..-1] == Time.now.strftime("%_m/%d")[1..-1] && game.away == true %>
    <% unless i == 1 %>
    <a><h1 class="main-text answer" data-reveal-id="myModal" data-reveal id="responsive_headline">NO.</h1></a>
    <% i = 1 %>
    <h2 class="main-text2 gamewrap" id="responsive_headline2">
        <span class="next-venue">away game</span>
        <span class="next-opponent">@<%= game.opponent %></span>
    </h2>
    <% end %>
<% else %>
    <% unless i == 1 %>
    <a><h1 class="main-text answer" data-reveal-id="myModal" data-reveal id="responsive_headline">NO.</h1></a>
    <% i = 1 %>
    <h2 class="main-text2 gamewrap" id="responsive_headline2">
        <span class="next-venue">vs.</span>
        <span class="next-opponent">
            <% if next_home_game > 1 %>
            <%= game.opponent %>
            in <%= next_home_game %> days |
            <% else %>
            <%= game.opponent %>
            in <%= next_home_game %> day |
            <% end %>
        <span class="next-time"><%= game.time %></span>
    </h2>
    <% end %>
  <% end %>
<% end %>

我尝试将config.time_zone = 'Central Time (US & Canada)'添加到application.rbproduction.rb,但它打破了部署。

以下是Ninefold如何做时间:https://help.ninefold.com/hc/en-us/articles/201320124-What-time-standard-does-Ninefold-use-

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

日期和时间(跨时区)是管理的噩梦(我知道这没什么帮助......但我一直在那里,你们表示哀悼)。

无论如何......尝试分别用Time.nowDate.today替换所有Time.zone.nowTime.zone.today来电。

确保所有时间都以UTC格式存储在数据库中(无论您当地时间或服务器的时间),并查看一些提供其他建议的文章(例如http://www.elabs.se/blog/36-working-with-time-zones-in-ruby-on-railshttp://danilenko.org/2012/7/6/rails_timezones/

祝你好运!