2014-03-13 17 views
0

我有一個紅寶石腳本,檢查提供的日期,以確保它是今天的日期。當提供的日期沒有2個月份的填充時,這不起作用。無論如何,讓紅寶石看到平等?例如,它說「處理日期3/13/2014不是今天的日期03/13/2014!」區別在於月 - 3與03.以下是代碼。 ev_val是從csv提供的,它是m/d/yyyy格式。雖然它沒有提供0填充。有什麼想法嗎?驗證日期 - m/d/yyyy不匹配mm/dd/yyyy?

謝謝!

tnow = Time.now 
     if ev_val != tnow.strftime("%m/%d/%Y") 
      log_linemsg = "Date Processed #{ev_val} is not today's date #{tnow.strftime("%m/%d/%Y")}! Processing date must be today's Date!!!\nSTOPPING SCRIPT!!!" 
      log_line = ["#{$cname}","#{log_linemsg}","","",] 
      puts log_linemsg 
      insert_logitems(connection, table_namelog, log_line) 
      exit 
     end 
+0

你正在做字符串比較,因爲字符串有不同的格式,所以你永遠不會得到日/月<= 9的平等。 –

回答

0

需要 「日期」

date_val = Date.parse ev_val今天

= Date.today

如果今天!= date_val

log_linemsg = "Date Processed #{ev_val} is not today's date #{today}! Processing date must be today's Date!!!\nSTOPPING SCRIPT!!!" 

0

由於您只關心日期部分,因此我會使用日期而不是時間。 把你的輸入字符串解析成一個Date對象,然後將它與今天的日期進行比較。

?> date_val = Date.parse('3/13/2014') 
=> Thu, 13 Mar 2014 
>> date_val == Date.today 
=> true 

在你的例子中Date.parse(ev_val)!= Date.today應該用於比較。