我有一个 rails/react 应用程序(只有一个应用程序),其中允许用户使用Flatpickr安排会议。
我正在传递一个名为“scheduled_for”的日期时间列,以便我可以在我的反应组件中使用它。
这就是我的“componentDidMount()”的样子:
componentDidMount = () => {
new Flatpickr(this.refs.scheduledFor, {
minDate: new Date(),
enableTime: true,
altInput: true,
altFormat: "F j, Y h:i K",
onChange: function(dateObject) { console.log(dateObject) }
});
}
我的会议模型中有一个“scheduled_for_future”验证方法,以防止会议被安排在过去。
##app/models/meeting.rb
validate :scheduled_for_future
def scheduled_for_future
if scheduled_for.present? && scheduled_for < Time.zone.now
errors.add(:scheduled_for, "Must be in future")
end
end
我希望用户能够在当地时区选择日期和时间,并将其保存为 UTC(Heroku 默认值)。
在本地开发中一切正常,但如果我尝试在生产中选择时间和日期,例如从现在开始 10 分钟,我会收到“必须在未来”错误。(这显然是因为我的时区是 PT 并且根据服务器的时间从现在开始的 10 分钟是过去的)
感觉这应该很容易解决。为了用户体验,我希望客户能够在他们自己的时区中选择时间并在保存之前转换为 UTC,但就是想不通。
我对 momentjs 或 flatpickr 不是很有经验,所以我很可能错过了一些非常重要的东西。
如果您需要更多信息/某些东西没有意义,请告诉我。
太感谢了