繁体   English   中英

Ruby on Rails-处理DateTime.current和用户输入时间

[英]Ruby on Rails - Handling of DateTime.current and User Input Time

我在Postgres数据库和JRuby 1.7.12中使用Rails 3.2.9。

应用程序正在运行具有GMT + 7亚洲/曼谷时区的Ubuntu Server。
config.time_zone设置为Bangkok
Postgres时区也设置为Asia / Bangkok

在我的发票模型中,我有2个日期时间字段,分别称为document_date和Movement_date

->运动日期由应用程序使用DateTime.current生成
-> document_date由用户输入(即2014-07-28)

当用户保存发票时,两者都将转换为UTC并保存到数据库中。

对于motion_date,就可以了(因为这是预期的行为)

对于document_date,将其转换为UTC时,将另存为2014-07-27 17:00。

如何将document_date到2014-07-28 00:00保存到数据库中而不转换为UTC。

非常感谢您的帮助,建议和建议,并非常感谢。

如果我需要添加其他信息,请告诉我。

编辑:两者在PostgreSQL中的字段正在使用没有时区的时间戳

如果我正确理解,则希望document_date(用户输入)使用UTC而不是本地时间。 这是正确的吗? 如果是这样,您将不得不手动更改它,因为Rails会假设您希望在本地时间进行更改。

您可以做的是手动设置它,将日期字符串转换为datetime(String#to_datime),恰好在控制器上保存对象之前。 像这样:

def create
  @invoice = Invoice.new(params[:invoice])
  @invoice.document_date = params[:invoice][:document_date].to_datetime
  @invoice.save
end

只要字符串上没有Time和TimeZone部分,String#to_datetime就会创建UTC DateTime(即:“ 2014-07-28 00:00:00 +0700”将转换为Bangkok DateTime)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM