2014-08-29 67 views
1

我用jQuery的日期時間選擇器來傳遞時間爲文本到控制器:`DateTime.strptime`1小時神祕添加到輸入的時間

Parameters: {"assignment"=>{"deadline"=>"08/29/2014 09:00"}} 

assignments_controller.rb,我解析PARAMS如下(我config.time_zone = "Eastern Time (US & Canada)"

@assignment.deadline = DateTime.strptime(params[:assignment][:deadline] + " Eastern Time (US & Canada)", "%m/%d/%Y %H:%M %Z").in_time_zone 

但不知何故,當@assignment.save,下面是記錄在數據庫:

UPDATE "assignments" SET "deadline" = ? WHERE "assignments"."id" = 9 [["deadline", Fri, 29 Aug 2014 10:00:00 EDT -04:00]] 

因此,即使在參數中,截止時間是上午9點,在活動記錄中它是10個。爲什麼?

回答

0

我想我明白了:這是由於夏令時。在this question鉛的答案創建一個輔助方法:

def parse_time_with_correct_zone(input_string) 
    input_format = "%m/%d/%Y %H:%M" 
    datetime_with_wrong_zone = DateTime.strptime(input_string, input_format) 
    correct_datetime = Time.zone.parse(datetime_with_wrong_zone.strftime('%Y-%m-%d %H:%M:%S')) 
    correct_datetime 
    end 

然後我就用這個方法在控制,而不是DateTime.strptime