我有一个应用程序:http://arethebaronsplaying.com/它在美国中部时间每天晚上7点暂停生产,但在当地正常工作。该网站由Ninefold托管。
简而言之,我有一个seeds.rb文件,里面有一堆Game对象,Game的属性之一是日期,它被设置为m/d格式,例如4/09。
每天晚上7点,应用程序都会显示一个大大的"否",并显示文字,说明下一场比赛是什么时候,下一场游戏是当天的比赛。然后在下面,它将显示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.rb
和production.rb
中,但它破坏了部署。
以下是Ninefold如何处理时间:https://help.ninefold.com/hc/en-us/articles/201320124-What-time-standard-does-Ninefold-use-
谢谢你的帮助!
日期和时间(跨时区)是一场难以管理的噩梦(我知道这没有多大帮助……但我一直在那里,我向你表示哀悼)。
不管怎样。。。尝试将所有Time.now
和Date.today
调用分别替换为Time.zone.now
和Time.zone.today
。
确保您的所有时间都以UTC存储在数据库中(无论您的本地时间或服务器的时间),并查看一些提供其他建议的文章(如http://www.elabs.se/blog/36-working-with-time-zones-in-ruby-on-rails和http://danilenko.org/2012/7/6/rails_timezones/)
祝你好运!