use*_*110 4 datetime ruby-on-rails
这个让我疯了!数据正确存储到db(sqlite3)中.但是,当我从记录中显示日期时,Rails似乎强制它到1/1/2000 - 使用正确的时间.换句话说,如果我将此指定为日期时间:2009年12月31日下午6:00,sqllite3实际上将显示2009-12-31 18:00:00.但.... Rails将显示该值已于2000年1月1日06:00 PM(保持正确的时间).
我创建了虚拟属性来处理日期格式(看起来工作正常).而且,我已将时区设置为:
config.time_zone = 'Eastern Time (US & Canada)'
Run Code Online (Sandbox Code Playgroud)
我不得不相信这很简单......这让我疯狂!
谢谢!
约翰
嗯...我发现了问题。事实证明,当 rails 创建表时,它使用的是 Time 数据类型。虽然日期时间值的日期部分将存储在时间字段中,但在读取时间字段时,rails 似乎只考虑时间部分。
修复.. 无奈之下,我将该列修改为日期时间类型。那修复了它。
约翰
小智 5
我有同样的问题,使用postgres,并感谢user145110建议使用DateTime类而不是Time.这对我有用.我只想补充一点,虽然我必须更改我的迁移以使用DateTime,但我仍然可以在测试中使用Time及其方法,与DateTime值进行比较.换句话说,通过这个原始迁移:
t.time :start_time
Run Code Online (Sandbox Code Playgroud)
...和使用时间的样本分配:
start_time = Time.now.beginning_of_day
Run Code Online (Sandbox Code Playgroud)
...它保存好了,但是稍后阅读时,年份改为2000年.也许这是一个旧的Y2K错误.大声笑.相反,我只是改变了迁移:
t.datetime :start_time
Run Code Online (Sandbox Code Playgroud)
..我的所有代码都有效.即使像这样的作业:
start_time = Time.zone.now.beginning_of_year.beginning_of_day
Run Code Online (Sandbox Code Playgroud)
我不禁感到我错过了什么.其他人是否使用Time来操纵日期?
| 归档时间: |
|
| 查看次数: |
2091 次 |
| 最近记录: |