Hey all,
Chronic will parse a date range in console:
Chronic.parse(1/1/2011 - 1/1/2012, :guess => false)
=> 2012-01-01 12:00:00 -0500…2012-01-01 12:00:01 -0500
However, when I use logger to check if it’s parsing in application, it
is not:
logger.info "The value of history date is #{history_date}" =>
The value of history date is 1/1/2011 - 1/1/2012
logger.info “The value of date range is
#{ Chronic.parse(history_date, :guess => false)}” => The value of date
range is
See how it returns nil for second logger. I have no clue why it works
fine in console but not in application.
thanks for response
This is strange what happened here. Chronic parse was not able to
parse a string when it contained a range like this:
“1/1/2011 - 1/1/2012”
So in order to address this, i had to check for the “-” in the string:
if history_date.include? “-”
date_range =
Chronic.parse(Date.parse(history_date), :guess => false)
else
date_range =
Chronic.parse(history_date, :guess => false)
end
Im open to better solutions.
thanks for response
On Sun, Jan 1, 2012 at 9:54 AM, John M. [email protected] wrote:
Chronic will parse a date range in console:
However, when I use logger to check if it’s parsing in application, it
is not:
Loading development environment (Rails 3.1.2)
ruby-1.9.2-p290 :001 > result = Chronic.parse(1/1/2011 - 1/1/2012,
:guess => false)
=> 2012-01-01 12:00:00 -0800…2012-01-01 12:00:01 -0800
ruby-1.9.2-p290 :002 > result = Chronic.parse(‘1/1/2011 - 1/1/2012’,
:guess => false)
=> nil
ruby-1.9.2-p290 :003 > result = Chronic.parse(eval(‘1/1/2011 -
1/1/2012’), :guess => false)
=> 2012-01-01 12:00:00 -0800…2012-01-01 12:00:01 -0800
ruby-1.9.2-p290 :004 >
HTH!
Hassan S. ------------------------ [email protected]
twitter: @hassan
It seems to parse the date wrong:
Chronic.parse(eval(“1/1/2011 - 1/1/2012”), :guess => false)
=> 2012-01-01 12:00:00 -0500…2012-01-01 12:00:01 -0500
I specify two years, 2011 and 2012. And it returns a range of 2012.
On Jan 1, 1:28pm, Hassan S. [email protected]
On Sun, Jan 1, 2012 at 10:49 AM, John M. [email protected] wrote:
It seems to parse the date wrong:
Chronic.parse(eval(“1/1/2011 - 1/1/2012”), :guess => false)
=> 2012-01-01 12:00:00 -0500…2012-01-01 12:00:01 -0500
I specify two years, 2011 and 2012. And it returns a range of 2012.
Actually it returns a span of 1 second
I was assuming your original example worked, but it doesn’t. And I
haven’t worked with Chronic much, so I’m not sure if that argument is
even something it’s expected to handle. For example this works fine:
ruby-1.9.2-p290 :007 > result = Chronic.parse(‘last year’, :guess =>
false)
=> 2011-01-01 00:00:00 -0800…2012-01-01 00:00:00 -0800
ruby-1.9.2-p290 :008 > result.class
=> Chronic::Span
ruby-1.9.2-p290 :009 > result.width
=> 31536000
while this obviously doesn’t:
ruby-1.9.2-p290 :010 > result = Chronic.parse(1/1/2011 - 1/1/2012,
:guess => false)
=> 2012-01-01 12:00:00 -0800…2012-01-01 12:00:01 -0800
ruby-1.9.2-p290 :011 > result.class
=> Chronic::Span
ruby-1.9.2-p290 :012 > result.width
=> 1
ruby-1.9.2-p290 :013 >
Time to jump into the gem source, I think
–
Hassan S. ------------------------ [email protected]
twitter: @hassan