Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails Postgresql时间列_Ruby On Rails_Time_Timezone_Rails Postgresql - Fatal编程技术网

Ruby on rails Rails Postgresql时间列

Ruby on rails Rails Postgresql时间列,ruby-on-rails,time,timezone,rails-postgresql,Ruby On Rails,Time,Timezone,Rails Postgresql,在我的表start\u Time和end\u Time中有两个没有时区列的时间。当事件发生时,我需要查看这些列中哪些列的开始时间

在我的表start\u Time和end\u Time中有两个没有时区列的时间。当事件发生时,我需要查看这些列中哪些列的开始时间<时间。现在<结束时间。问题似乎是Rails并没有以UTC来节省时间,而是完全按照我在字段中输入的时间来节省时间。我的本地时区是UTC-5,所以如果我输入的结束时间是09:00:00,我希望它会被保存到数据库中为14:00:00,但它会被保存为09:00:00,所以当我以后运行我的开始时间 下面是一个示例,该模型称为TimeParameter:

1.9.3-p392 :001 > TimeParameter.create(start_time: "00:30:00", end_time: "09:00:00")
   (7.0ms)  SELECT * FROM geometry_columns WHERE f_table_name='time_parameters'
   (0.2ms)  BEGIN
  SQL (9.8ms)  INSERT INTO "time_parameters" ("created_at", "day_of_week", "end_time", "start_time", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id"  [["created_at", Tue, 23 Jul 2013 14:29:06 UTC +00:00], ["day_of_week", nil], ["end_time", 2000-01-01 09:00:00 UTC], ["start_time", 2000-01-01 00:30:00 UTC], ["updated_at", Tue, 23 Jul 2013 14:29:06 UTC +00:00]]
   (308.9ms)  COMMIT
 => #<TimeParameter id: 24, start_time: "2000-01-01 00:30:00", end_time: "2000-01-01 09:00:00", day_of_week: nil, created_at: "2013-07-23 14:29:06", updated_at: "2013-07-23 14:29:06"> 
当地时间约为09:30,UTC约为14:30 请注意,更新的时间和创建的时间反映了UTC时间14:30,但我的开始时间和结束时间在保存之前不会转换为UTC

Ruby版本:1.9.3-p392


Rails版本:3.2.13

您希望字符串00:30在何处以及为什么会根据UTC-5时区进行解释,并将b转换为UTC?我希望在模型创建过程中,它会使用一个字符串并将其转换为UTC支持的时间,而不是直接将该字符串解释为UTC。我已经将我的控制器设置为现在将字符串解析为本地时间对象,这感觉有点不对劲。这是一个主观问题,我不知道这是否是Rails开发人员的推理,但对我来说,假设未指定的时区意味着当前服务器时区比假设UTC的风险更大,因为这意味着代码在不同的环境中表现不同。代码没有理由假设站点的用户与托管它的服务器位于同一时区,因此13:00的用户输入不可避免地是不明确的。实际上这有点古怪。因此,服务器实际上将与internet隔离,并在think construction site周围移动,然后数据库中的信息将定期同步到我们的家庭服务器。设置这些时间事件的人不会理解UTC,但计算机/服务器将设置在本地时区。这样,当用户说14:00时,我将其转换为UTC,并将其保存到数据库中,以使每个人都满意。到目前为止,这肯定不是标准的做法。当使用时间数据类型时,我发现有一点很奇怪,那就是我不能像使用日期时间那样将其转换为用户的时区。