格式化条件语句

时间:2017-02-19 21:20:00

标签: ruby datetime

在条件语句中使用两个日期时间变量时遇到问题。

以下是变量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

2 个答案:

答案 0 :(得分:0)

似乎时区与时间有关,但如果你肯定你不需要它们:check out strftime

答案 1 :(得分:0)

有条件正常运作。两个变量都必须采用相同的DateTime格式,而不是我的格式。