我有一个日历,当用户点击一天时,我通过 ajax 将 javascript 时间变量传递给我的 rails 控制器。
这在本地工作正常,但是当部署在我的服务器上时,日期似乎比我单击的日期晚了一天。
当我最初使用日历加载页面时,它显示正确的日期并且我正在使用:day = Time.now.to_date.to_s(:db)
当用户点击日历中的某一天时,它会采用这个 js 语句:
start_date: Math.floor(new Date(date).getTime()/1000)
这意味着:
1362549600
并将其 ajaxilly 传递到此 rails 控制器方法中:
start_date = Time.at(params[:start_date].to_i).to_date.to_s(:db)
logger.info "start_date = #{start_date}"
logger.info "time = #{Time.at(params[:start_date].to_i).to_datetime.to_s(:db)}"
记录器输出为:
start_date = 2013-03-05
time = 2013-03-05 22:00:00
我在 config/application.rb 中设置了我的时区:
config.time_zone = 'Central Time (US & Canada)'
对于如何解决这个问题,有任何的建议吗?我是否使用不正确的方式将日期从 js 传递到 rails?
编辑
顺便说一下,在我的 javascript 片段中,date
最初是Wed Feb 06 2013 00:00:00 GMT-0600 (CST)
我刚刚检查的另一件事是我的服务器时间在 PDT 中,而我实际上坐在中央时间。
$ date
Tue Mar 19 16:51:52 PDT 2013
我还看到,在本地运行我的应用程序时,我的记录器输出是:
start_date = 2013-03-06
time = 2013-03-06 00:00:00
这就是昨天和今天的区别。我不确定我应该改变什么来解决这个问题。