【发布时间】:2013-10-08 21:30:49
【问题描述】:
我正在尝试将日期保存到数据库中,但我无法正确设置。日期总是在实际日期后 4 小时。我正在使用 FullCalendar 来显示事件。
我这样保存日期:
var dateEnd = new Date();
dateEnd.setDate(day);
dateEnd.setMonth(month);
dateEnd.setFullYear(year);
dateEnd.setHours(hour);
dateEnd.setMinutes(minutes);
alert('Next slot: ' + dateEnd);
$('#calendar').fullCalendar('renderEvent', { title: 'YOUR TITLE', start: date, end: dateEnd,allDay: false, backgroundColor: '#378006' }, true );
$.ajax({
type: "POST",
url: "/create",
data: {
start_date: date,
end_date: dateEnd,
doctor_id: '1',
user_id: '1'
}
});
我这样显示事件:
events:
[
<% @appointments.each do |appointment| %>
{
//alert(<%= appointment.start_date %>);
title : "Reserved",
start : "<%= appointment.start_date.strftime '%Y-%m-%dT%H:%M:%S' %>",
end : "<%= appointment.end_date.strftime '%Y-%m-%dT%H:%M:%S' %>",
allDay : false
},
<% end %>
],
我把它放在 application.rb 中,就像在这个线程 Different date saved to database - wrong time zone 中一样,但它仍然是一样的:
config.time_zone = 'Central Time (US & Canada)'
config.active_record.default_timezone = :local
config.active_record.time_zone_aware_attributes = false
数据库中的日期总是提前 4 小时,当我从数据库中取回日期时,它们在 FullCalendar 上显示不正确。
【问题讨论】:
-
听起来像是时区问题。您的数据库认为是哪个时区?你的代码认为它是什么?
-
我的数据库以 UTC 时区保存所有内容。我目前在纽约,如果我在上午 10 点创建一个活动,它将像下午 2 点一样保存到数据库中。所以,相差 4 小时。
-
我想我找到了解决方案。似乎它不想自动转换,所以在我需要输入“in_time_zone”的日期之后,它会正常将其转换为指定的时区。
标签: ruby-on-rails ruby date activerecord fullcalendar