在条件语句中使用两个日期时间变量时遇到问题。
以下是变量1的示例输出。让我们称之为 ontime_datetime :
2017年2月10日星期五16:30:00 +0000
以下是变量2的示例输出。让我们称之为 delivery_timestamp :
2017年2月10日星期五13:15:00 -0600
我需要比较这两个变量,找出哪个值在日期和时间上更大:
if delivery_timestamp <= ontime_datetime
f.update_attributes(on_time: true)
puts "#{f.tracking_number} ONTIME"
elsif delivery_timestamp > ontime_datetime
f.update_attributes(status_refund: true)
puts "#{f.tracking_number} NOT ONTIME"
else
f.update_attributes(other_result: true)
puts "#{f.tracking_number} OTHER"
end
当我运行我的脚本时,第二个条件符合,但值为 delivery_timestamp在ontime_datetime之前,所以第一个条件 应该 。我认为这与时区价值有关? (我不需要但不确定如何删除)
或者我需要为这种类型更好地格式化变量 有条件的。
DK稍后添加了更多信息---- 以下是我如何获得 ontime_datetime :
json_response = JSON.parse(response)
transit_time = json_response['TrackPackagesResponse']['packageList'][0]['standardTransitTimeWindow']['displayStdTransitTimeEnd']
transit = json_response['TrackPackagesResponse']['packageList'][0]['standardTransitDate']['displayStdTransitDate']
transit_date = Date.parse Date.strptime(transit, '%m/%d/%Y').strftime("%Y-%m-%d")
transit_datetime = "#{transit_date} #{transit_time}"
ontime_datetime = DateTime.strptime(transit_datetime, "%Y-%m-%d %I:%M %p")
...以下是我如何获得 delivery_timestamp :
delivery_timestamp = info_track[:delivery_timestamp]
输出值与ontime_datetime和delivery_timestamp之间的格式相同,但条件评估无法正常工作。 任何帮助(通过代码演示)都会很棒!
请指教 - DK
答案 0 :(得分:0)
似乎时区与时间有关,但如果你肯定你不需要它们:check out strftime
答案 1 :(得分:0)
有条件正常运作。两个变量都必须采用相同的DateTime格式,而不是我的格式。